TLE-oj Cup Round 6 - Khử nguyên tố
Xem PDFHôm nay, thầy giáo trên lớp của đã đưa ra một bài toán với độ khó xấp xỉ 3000 (cụ thể là 800
) codeforces, với phần thưởng cho người đầu tiên giải được là một cặp vé xem phim. Bài toán có nội dung như sau:
Định nghĩa f(i) = \frac{i}{p^{V_p(i)}}. Tính f(1) + f(2) + ... + f(n). Vì kết quả có thể rất lớn nên chỉ cần in ra kết quả đó sau khi chia lấy dư cho 10^9+7.
Do mới học code nên không thể giải được bài toán siêu khủng này. Em liền đưa bài toán này cho , người mà em luôn đối xử trên cả tình bạn, với hy vọng có thể cùng nhau giành được một cặp vé xem phim chung. Tuy nhiên, , người đã có hai giải Nhất THTQG, lại chỉ giải được bài toán này với p = 2. Thất vọng, đành tìm đến sự trợ giúp của , người cũng đã có một giải Nhất THTQG, nhưng thật không may, lại không nghiên cứu sâu về toán nên không biết V_p(i) là gì. Bạn có thể giúp giải được bài toán này để giành lấy cặp vé xem phim hay không?
(Biết rằng: V_p(i), hay lũy thừa của p trong i, được định nghĩa trong bài tập này là số nguyên không âm y lớn nhất không vượt quá 10^{18} sao cho i \vdots p^y. Ví dụ: Ta có V_2(4) = 2 do 4\vdots 2^2 nhưng không chia hết cho 2^3. Do đó f(4) = \frac{4}{2^2} = 1).
Giới hạn: n, p \le 10^{18}.
Input, Output và Subtasks
Input: (KNT.inp)
- Một dòng duy nhất gồm hai số nguyên dương n và p.
Output: (KNT.out)
- Một dòng duy nhất là kết quả bài toán.
Subtasks
- Subtask 1 (10\%): n \le 10^6.
- Subtask 2 (10\%): p = 1, n \le 10^9.
- Subtask 3 (10\%): p = 1.
- Subtask 4 (15\%): n \le 10^9.
- Subtask 5 (15\%): trường hợp đặc biệt mà làm được.
- Subtask 6 (20\%): p là số nguyên tố không vượt quá 10^9.
- Subtask 6 (20\%): Không có giói hạn gì thêm.
Sample
Input (KNT.inp)
5 2
Output (KNT.out)
11
Notes
- Ta có f(1) = f(2) = f(4) = 1, f(3) = 3, f(5) = 5. Do đó kết quả là 1 + 1 + 3 + 1 + 5 = 11.
Bình luận