题目地址
看到这题的题解,大佬都说是小学奥数,蔡得我不敢鸡声。
求 (a^b) 所有的约数之和 mod (9901) ((1<=a,b<=5*10^7))
题解
做这道题,我还赶紧去看了一下 唯一分解定理
我们先把 (a) 分解质因数
[a=p_1^{c_1}*p_2^{c_2}*...*p_n^{c_n}
]
比如说 (12) 可以分成 (2^2+3^1) 啦
因为 同指数幂相乘,指数不变,底数相乘 ,所以就有:
[a^b=p_1^{c_1*b}*p_2^{c_2*b}*...*p_n^{c_n*b}
]
根据 唯一分解定理,(a^b) 的约数和就是
[(1+p_1+p_1^2+...+p_1^{c_1*b})*(1+p_2+p_2^2+...+p_2^{c_2*b})*...*(1+p_3+p_3^2+...+p_3^{c_3*b})
]
大佬看出了是等比数列,而我这个蒟蒻没有看出来
因为等比数列的求和公式要用除法,除法不满足 ( ext{mod}) 的分配律
所以我们就迎来了这个题目的重点——分治
设 ( ext{sum}(p,c)),为 ((1+p+p^2+...+p^{c}))
- 若 (c) 为奇数,则有
[ ext{sum}(p,c)=(1+p+...+p^{frac{c-1}{2}})+(p^{frac{c+1}{2}}+...+p^c)
]
[=1*(1+p+...+p^{frac{c-1}{2}})+frac{c+1}{2}*(1+p+...+p^{frac{c-1}{2}})
]
[=(1+frac{c+1}{2})* ext{sum}(p,frac{c-1}{2})
]
- 若 (c) 为偶数数,类似的有
[ ext{sum}(p,c)=(1+frac{p}{2})* ext{sum}(p,frac{p}{2}-1)*p^c
]
结合快速幂,时间复杂度上可以过得去
讲了这么多(虽然是看书),我忘了告诉你这个题目我是口胡的。