Với một số nguyên không âm, tổng chữ số là tổng các chữ số trong biểu diễn thập phân của số đó.
Cho số nguyên dương K có thể rất dài và số nguyên D. Hãy đếm các số nguyên x thỏa 1≤x≤K và tổng chữ số của x chia hết cho D. Vì kết quả có thể lớn, hãy lấy phần dư theo 1,000,000,007.
Input
Dòng đầu chứa số nguyên dương K dưới dạng chuỗi.
Dòng thứ hai chứa D.
Output
In số lượng số thỏa mãn modulo 1,000,000,007.
Constraints
1≤K<1010000.
1≤D≤100.
K không có số 0 ở đầu.
Scoring
Subtask 1 (50 điểm):K≤105.
Subtask 2 (50 điểm): Không có giới hạn bổ sung.
Example
Test 1
Input
20
2
Output
10
Giải thích: Các số thỏa mãn là 2,4,6,8,11,13,15,17,19,20; tổng chữ số của mỗi số đều chẵn.
Lời giải tóm tắt
Ý tưởng: DP theo vị trí, cờ tight và phần dư của tổng chữ số modulo D. Đường chọn toàn số 0 đại diện cho số 0 nên phải trừ một khỏi kết quả cuối; mọi phép cộng được lấy modulo 1,000,000,007.
Tính đúng đắn: Ta chứng minh theo thứ tự các vị trí được duyệt. Ở mỗi trạng thái, các thành phần của trạng thái lưu đúng toàn bộ thông tin về tiền tố đã chọn có thể ảnh hưởng đến phần còn lại. Mỗi chữ số hoặc bit hợp lệ tiếp theo được xét đúng một lần, đồng thời điều kiện giới hạn bảo đảm tiền tố không vượt cận đang đếm. Vì thế mọi giá trị hợp lệ xuất hiện đúng một đường đi và mọi đường đi được cộng đều tương ứng với một giá trị hợp lệ. Khi dùng hiệu hai hàm tiền tố, mỗi phần tử trong đoạn đóng được tính đúng một lần.
Độ phức tạp: O(|K|·D·10) thời gian và O(D) bộ nhớ.
Ý tưởng: Tăng số nguyên lớn từ 1 đến K, tính trực tiếp tổng chữ số của từng giá trị.