Nối số (đề HSG 12 Quảng Bình 2023)
Xem dạng PDF
Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
CONCAT.INP
Output:
CONCAT.OUT
Dạng bài
Ngôn ngữ cho phép
C++, Pascal, PyPy, Python
Hàm nối hai số nguyên dương ~a~ và ~b~ (kí hiệu là ~CONCAT(a, b)~) được thực hiện qua các bước sau:
- Bước 1: Chuyển cả hai số nguyên dương đó thành chuỗi.
- Bước 2: Gắn kết hai chuỗi đó thành một theo đúng thứ tự.
- Bước 3: Chuyển chuỗi mới thành một số nguyên và trả về giá trị đó cho hàm.
Ví dụ: hàm nối hai số 123 và 45 là ~CONCAT(123, 45) = 12345~; ~CONCAT(1, 3) = 13~.
Cho một dãy gồm ~N~ số nguyên dương ~a_1, a_2, \dots, a_N~ và hai số ~L, R~.
Yêu cầu: Hãy đếm số cặp ~(i, j)~ trong đó ~(1 \le i, j \le N)~ mà ~L \le CONCAT(a_i, a_j) \le R~. Lưu ý các cặp ~(i, j)~ khác nhau về thứ tự là khác nhau và có thể ~i = j~.
Dữ liệu
- Dòng 1: một số nguyên dương ~T~ (~1 \le T \le 10^4~) là số lượng test.
- Các dòng tiếp theo ghi các test. Mỗi test được ghi trên 2 dòng như sau:
- Dòng 1 của test ghi ba số nguyên dương ~N, L, R~ (~2 \le N \le 10^5~, ~1 \le L \le R \le 10^{15}~).
- Dòng 2 của test ghi ~N~ số nguyên dương, số thứ ~i~ có giá trị ~a_i~ (~1 \le a_i \le 10^7~).
- Tổng của ~N~ trong các test không vượt quá ~10^6~.
Kết quả
Gồm ~T~ dòng, mỗi dòng ghi một số nguyên ~t~ duy nhất là kết quả tìm được của test tương ứng.
Ví dụ
CONCAT.INP
3
2 10 52
3 5
3 58 100
4 2 3
5 28 102
3 2 1 9 10
CONCAT.OUT
2
0
11
Giải thích: Có 3 bộ test, trong đó:
- Ở bộ test thứ nhất:
- ~(i=1, j=1)~: ~CONCAT(a_1, a_1) = 33~ và ~10 \le 33 \le 52~, thỏa mãn điều kiện.
- ~(i=1, j=2)~: ~CONCAT(a_1, a_2) = 35~ và ~10 \le 35 \le 52~, thỏa mãn điều kiện.
- ~(i=2, j=1)~: ~CONCAT(a_2, a_1) = 53~, không thỏa mãn điều kiện.
- ~(i=2, j=2)~: ~CONCAT(a_2, a_2) = 55~, không thỏa mãn điều kiện.
- Ở bộ test thứ hai: không có cặp số nào có thể tạo ra số nguyên lớn hơn 58.
- Ở bộ test thứ ba: các kết quả thỏa mãn điều kiện sau khi nối là 33, 32, 31, 39, 29, 93, 92, 91, 99, 102, 101.
Bình luận