Số đặc biệt
Một số nguyên dương \(K\) được gọi là số đặc biệt nếu số \(K^2 - 1\) chia hết cho \(5\).
Ví dụ:
- \(4\) là số đặc biệt vì \(4^2 - 1 = 15\) chia hết cho \(5\);
- \(7\) không phải là số đặc biệt vì \(7^2 - 1 = 48\) không chia hết cho \(5\).
Yêu cầu: Cho 2 số nguyên dương \(L, R\) (\(2 \le L \le R \le 10^{18}\)); hãy đếm các số đặc biệt trên đoạn \([L, R]\).
Dữ liệu: Gồm một dòng chứa hai số nguyên dương \(L, R\).
Kết quả: Ghi ra một số duy nhất là kết quả của bài toán.
Ví dụ:
| stdin | stdout |
|---|---|
2 8 |
2 |
Ràng buộc:
- Có 80% số điểm có \(2 \le L \le R \le 10^6\);
- 20% số điểm còn lại không có ràng buộc gì thêm.
Array and Segments (Hard version)
Bạn được cho một mảng \(a\) gồm \(n\) số nguyên. Giá trị của phần tử thứ \(i\) trong mảng là \(a_i\).
Bạn cũng được cho một tập hợp gồm \(m\) đoạn. Đoạn thứ \(j\) là \([l_j, r_j]\), trong đó \(1 \le l_j \le r_j \le n\).
Bạn có thể chọn một tập con bất kỳ từ tập hợp các đoạn đã cho và giảm giá trị trên mỗi đoạn được chọn đi một đơn vị (một cách độc lập). Ví dụ, nếu mảng ban đầu \(a = [0, 0, 0, 0, 0]\) và các đoạn được cho là \([1, 3]\) và \([2, 4]\), thì bạn có thể chọn cả hai đoạn đó và mảng sẽ trở thành \(b = [-1, -2, -2, -1, 0]\).
Bạn phải chọn một tập con của các đoạn đã cho (mỗi đoạn có thể được chọn tối đa một lần) sao cho nếu bạn áp dụng tập con các đoạn này vào mảng \(a\) và thu được mảng \(b\), thì giá trị \(\max(b) - \min(b)\) sẽ là lớn nhất có thể.
Lưu ý rằng bạn có thể chọn tập con rỗng.
Nếu có nhiều đáp án, bạn có thể in ra đáp án bất kỳ.
Dữ liệu vào
Dòng đầu tiên của dữ liệu vào chứa hai số nguyên \(n\) và \(m\) (\(1 \le n \le 10^5, 0 \le m \le 300\)) — lần lượt là độ dài của mảng \(a\) và số lượng đoạn.
Dòng thứ hai chứa \(n\) số nguyên \(a_1, a_2, \dots, a_n\) (\(-10^6 \le a_i \le 10^6\)), trong đó \(a_i\) là giá trị của phần tử thứ \(i\) của mảng \(a\).
\(m\) dòng tiếp theo, mỗi dòng chứa hai số nguyên. Dòng thứ \(j\) trong số đó chứa hai số nguyên \(l_j\) và \(r_j\) (\(1 \le l_j \le r_j \le n\)), trong đó \(l_j\) và \(r_j\) là các điểm mút của đoạn thứ \(j\).
Dữ liệu ra
Trong dòng đầu tiên, in ra một số nguyên — giá trị lớn nhất có thể của \(\max(b) - \min(b)\).
Trong dòng thứ hai, in ra một số nguyên \(q\) — số lượng đoạn mà bạn chọn.
Trong dòng thứ ba, in ra \(q\) số nguyên phân biệt từ \(1\) đến \(m\) theo thứ tự bất kỳ — chỉ số của các đoạn mà bạn chọn. Nếu có nhiều đáp án, bạn có thể in ra đáp án bất kỳ.
Ví dụ
| Input 1 | Output 1 |
|---|---|
5 4 |
6 |
| Input 2 | Output 2 |
|---|---|
5 4 |
7 |
| Input 3 | Output 3 |
|---|---|
1 0 |
0 |
Chú thích
Trong ví dụ đầu tiên, nếu chúng ta chọn các đoạn \(1\) và \(4\), mảng \(b\) sẽ trở thành \([0, -4, 1, 1, 2]\) và \(\max(b) - \min(b) = 2 - (-4) = 6\).
Trong ví dụ thứ hai, nếu chúng ta chọn các đoạn \(2\) và \(3\), mảng \(b\) sẽ trở thành \([2, -3, 1, -1, 4]\) và \(\max(b) - \min(b) = 4 - (-3) = 7\).
Trong ví dụ thứ ba, mảng \(a\) chỉ có một phần tử nên \(\max(a) - \min(a) = 0\) và bất kể chúng ta chọn các đoạn nào đi nữa thì đáp án vẫn sẽ là \(0\).
Tìm vị trí ô tô
Timur đang di chuyển trên một trục số từ điểm \(0\) đến điểm \(n\) bằng ô tô. Ô tô bắt đầu chuyển động từ điểm \(0\) tại thời điểm phút thứ \(0\).
Trên trục số có \(k + 1\) biển báo tại các điểm \(0, a_1, a_2, \dots, a_k\). Timur biết rằng ô tô sẽ lần lượt đi qua các biển báo này tại các thời điểm tương ứng là phút \(0, b_1, b_2, \dots, b_k\). Các dãy \(a\) và \(b\) là các dãy tăng nghiêm ngặt với \(a_k = n\).
Giữa hai biển báo liền kề bất kỳ, ô tô di chuyển với vận tốc không đổi. Timur có \(q\) truy vấn: mỗi truy vấn là một số nguyên \(d\). Với mỗi truy vấn, hãy tính xem ô tô mất bao nhiêu phút để đến được điểm \(d\), làm tròn xuống số nguyên gần nhất.
Dữ liệu vào
- Dòng đầu tiên chứa một số nguyên \(t\) (\(1 \le t \le 10^4\)) — số lượng bộ dữ liệu (test case).
- Với mỗi test case:
- Dòng đầu tiên chứa ba số nguyên \(n, k, q\) (\(1 \le k, q \le 10^5; k \le n \le 10^9\)) — lần lượt là điểm đến cuối cùng, số lượng biển báo (không tính gốc \(0\)) và số lượng truy vấn.
- Dòng thứ hai chứa \(k\) số nguyên \(a_1, a_2, \dots, a_k\) (\(1 \le a_i \le n; a_i < a_{i+1}; a_k = n\)).
- Dòng thứ ba chứa \(k\) số nguyên \(b_1, b_2, \dots, b_k\) (\(1 \le b_i \le 10^9; b_i < b_{i+1}\)).
- \(q\) dòng tiếp theo, mỗi dòng chứa một số nguyên \(d\) (\(0 \le d \le n\)) — vị trí cần tính thời gian.
- Dữ liệu đảm bảo tổng của \(k\) trên tất cả các test case không vượt quá \(10^5\), và tổng của \(q\) trên tất cả các test case không vượt quá \(10^5\).
Dữ liệu ra
- Với mỗi truy vấn, in ra một số nguyên duy nhất — số phút đã trôi qua cho đến khi ô tô đạt tới điểm \(d\) (đã làm tròn xuống).
Ví dụ
| Input | Output |
|---|---|
| 4 10 1 3 10 10 0 6 7 10 2 4 4 10 4 7 6 4 2 7 1000000000 1 1 1000000000 1000000000 999999999 6 1 3 6 5 2 6 5 |
0 6 7 5 4 2 5 999999999 1 5 4 |
Số nguyên tố đặc biệt
Số nguyên tố là số nguyên dương lớn hơn \(1\) và chỉ có đúng hai ước số dương là \(1\) và chính nó. Một số nguyên \(x\) được gọi là số nguyên tố đặc biệt nếu \(x\) là số nguyên tố và số viết ngược lại của \(x\) cũng là số nguyên tố.
Ví dụ:
- Số \(13\) là số nguyên tố đặc biệt vì \(13\) và \(31\) đều là các số nguyên tố.
- Số \(23\) không phải là số nguyên tố đặc biệt vì \(23\) là số nguyên tố nhưng \(32\) không phải là số nguyên tố.
Cho dãy số \(A\) có \(N\) phần tử nguyên \(A_1, A_2, \dots, A_N\) và \(Q\) truy vấn.
Yêu cầu
Với mỗi cặp chỉ số \(L, R\) (\(1 \le L \le R \le N\)) trong \(Q\) truy vấn, hãy đếm số lượng số nguyên tố đặc biệt trong đoạn con \(A_L, A_{L+1}, \dots, A_R\).
Dữ liệu vào (Standard Input)
- Dòng 1: Ghi hai số nguyên dương \(N, Q\) (\(1 \le N \le 10^6; 1 \le Q \le 10^6\)).
- Dòng 2: Ghi \(N\) số nguyên \(A_1, A_2, \dots, A_N\) (\(-10^7 \le A_i \le 10^7\)).
- \(Q\) dòng tiếp theo: Mỗi dòng ghi hai số nguyên dương \(L, R\) (\(1 \le L \le R \le N\)).
Dữ liệu ra (Standard Output)
- In ra \(Q\) dòng, mỗi dòng ghi kết quả tìm được tương ứng với từng truy vấn \(L, R\).
Ví dụ
| Input | Output |
|---|---|
| 8 3 8 3 25 7 -5 13 2 -20 1 3 2 6 6 8 |
1 3 2 |