poj 1845
来源:互联网 发布:linux安全狗 编辑:程序博客网 时间:2024/06/11 04:00
约数的和
题目描述:
A^B的约数的和. A和B~1e5
题解:
首先求一个数所有约数的和:18的话,有1个2,2个3,那么就是(1+2)*(1+3+3^2).
其次,这么大,如何快速求出1+p+p^2+p^3+p^4….+p^n.
用二分乘上一个共同的倍数就好.
重点:
关键还是在算一个数的所有约数,考虑对答案的贡献,然后看每一个质数,之后可能情况.
代码:
long long pow_m(long long a,long long n)//快速幂{long long ret = 1;long long tmp = a%MOD;while(n){if(n&1)ret = (ret*tmp)%MOD;tmp = tmp*tmp%MOD;n >>= 1;}return ret;}//计算1+p+p^2+...+p^nlong long sum(long long p,long long n){if(p == 0)return 0;//边界条件if(n == 0)return 1;if(n & 1){return ((1+pow_m(p,n/2+1))%MOD*sum(p,n/2)%MOD)%MOD;}else return ((1+pow_m(p,n/2+1))%MOD*sum(p,n/2-1)+pow_m(p,n/2)%MOD)%MOD;//将n/2拆出来.}//返回A^B的约数之和 % MODlong long solve(long long A,long long B){getFactors(A);long long ans = 1;for(int i = 0;i < fatCnt;i++){ans *= sum(factor[i][0],B*factor[i][1])%MOD;ans %= MOD;}return ans;}
0 0
- POJ 1845
- poj 1845
- POJ 1845
- poj 1845
- POJ 1845
- poj 1845
- POJ 1845
- poj 1845
- poj 1845
- poj 1845
- POJ 1845
- Poj - 1845
- poj 1845
- POJ 1845
- POJ 1845 Sumdiv
- poj 1845-Sumdiv
- poj 1845 Sumdiv
- poj 1845 Sumdiv
- 僵尸木马
- 搭建Xilinx交叉编译环境
- linux svn cmd
- Eclipse快捷键 10个最有用的快捷键
- 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第十三讲:盒子的定位实例
- poj 1845
- hdu 2444The Accomodation of Students 二分图判定+找最大匹配
- HTML5游戏总结:分辨率对游戏布局设计的影响
- 南阳oj 数据结构 括号配对 题目2 NYOJ
- pascal+sublime搭建Pascal学习环境
- Android studio 快捷键
- HDU4152-Happy 2004-积性函数和快速幂乘
- 开发板上的tftp 上传和下载用法
- system/WIFEXITED/WEXITSTATUS函数-linux