原题链接:P1845 Sumdiv
题意
给定$A,B$,求$A^B$对9901取模的值。
分析
先说说我的第一思路:模数是很小的,完全可以开一个桶放下所有的幂次方。
所以我们可以把每个数分解质因数了,然后把每个质数的所有幂次方装进桶里。
然后我们从$1$到$9901$枚举每一位,同时统计他们的个数积,最后答案加上(个数积$\times$幂次方积)就可以了。。
发现时间有点爆炸。。。
而且这些所谓的优化好像是用处不大的。。
考虑从数论的层面上解决??
首先$$A^B=p_1^{Ba_1}\times p_2^{Ba_2}\times \cdots \times p_m^{Ba_m}$$
那么所有的质因数的和就是枚举每一位指数
我们先提取含$p_1$的式子
$$\sum_{k_1,k_2,\cdots ,k_m}^{k_1\leq Ba_1,k_2\leq Ba_2,\cdots ,k_m\leq Ba_m}{({p_1}^{k_1}+{p_2}^{k_2}+\cdots +{p_m}^{k_m})(\cdots)}$$
然后我们把后面的也化简之后,每个因数就剩下它的等比数列求和了,我们利用求和公式
最后答案就是$$\sum_{i=1}^m{\frac{p_i^{Ba_i+1}-1}{p_i-1}}$$