题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1452
题目大意:
对于一个正整数X,令S是2004^X的所有约数和。现在计算S%29的结果。
思路:
先将2004分解素因子,2004 = 2^(2*X) * 3^X * 167^X,所以
S = (2^(2*X+1) - 1)/(2-1) * (3^(X+1) - 1)/(3-1) * (167^(X+1) - 1)/(167-1)。
S = (2^(2*X+1) - 1) * (3^(X+1) - 1)/2 * (167^(X+1) - 1)/166
令
a = 2^(2*X+1) - 1,
b = (3^(X+1) - 1)/2
c = (167^(X+1) - 1)/166
根据%运算法则:
1. (a*b) %p= ( a%p) *(b%p)
2. (a/b) %p= ( a *b^(-1)%p) b^(-1)为a模p的逆元。
求得:167%29 = 22,166%29 = 21,2模29的逆元为15,21模29的逆元为18,则:
a = (2^(2*X+1) - 1) % 29
b = (3^(X+1) - 1) * 15 % 29
c = (22^(X+1) - 1) * 18 % 29
最终结果为:ans = a*b%29*c%29
AC代码:
















