JOI 2012 - Zig-Zag Numbers
Xem PDFMột số nguyên dương được gọi là số zigzag nếu khi viết số đó trong hệ thập phân, không có chữ số \(0\) ở đầu, rồi đọc các chữ số theo thứ tự từ trái sang phải, các bước tăng và giảm luân phiên nhau. Các bước tăng và giảm đều là nghiêm ngặt.
Ví dụ, \(2947\) là số zigzag vì dãy chữ số \(2 \to 9 \to 4 \to 7\) lần lượt tăng, giảm, rồi tăng. Số \(71946\) cũng là số zigzag vì các bước lần lượt là giảm, tăng, giảm, rồi tăng. Ngược lại, \(123\), \(71446\), \(71442\) và \(88\) không phải số zigzag. Mọi số nguyên dương có một chữ số đều được coi là số zigzag.
Yêu cầu
Đếm số zigzag là bội của \(M\) trong đoạn từ \(A\) đến \(B\), kể cả hai đầu mút, rồi lấy phần dư khi chia số lượng đó cho \(10000\).
Dữ liệu vào
Dữ liệu vào gồm \(3\) dòng, mỗi dòng chứa một số nguyên dương. Ba dòng lần lượt chứa \(A\), \(B\) và \(M\).
Lưu ý rằng \(A\) và \(B\) có thể không nằm trong phạm vi biểu diễn của các kiểu dữ liệu số nguyên thông thường.
Dữ liệu ra
In ra một dòng chứa phần dư khi chia số lượng các số zigzag là bội của \(M\) trong đoạn \([A,B]\) cho \(10000\).
Ràng buộc
- \(1 \le A \le B \le 10^{500}\).
- \(1 \le M \le 500\).
- \(A\), \(B\) và \(M\) đều là số nguyên dương.
Ví dụ
Ví dụ 1
Input
100
200
5
Output
13
Giải thích
Có \(13\) số zigzag là bội của \(5\) trong đoạn từ \(100\) đến \(200\): \(105\), \(120\), \(130\), \(140\), \(150\), \(160\), \(165\), \(170\), \(175\), \(180\), \(185\), \(190\) và \(195\).
Ví dụ 2
Input
6
1234567
3
Output
246
Giải thích
Có \(50246\) số zigzag là bội của \(3\) trong đoạn từ \(6\) đến \(1234567\). Phần dư khi chia số này cho \(10000\) là \(246\), nên in ra \(246\).
Kỳ thi:
- JOI 2011/2012 - Vòng sơ khảo (13 Tháng 1., 2016)
Bình luận