[POJ]P1845 Sumdiv

原题链接: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}}$$

猜你喜欢

转载自www.cnblogs.com/onglublog/p/10322544.html