HDU 1852,1452 a^n的约数和
来源:互联网 发布:尼泊尔少年 知乎 编辑:程序博客网 时间:2024/05/23 19:32
想法:a^n,先把a拆成所有的素数乘积,如2004=2*2*3*167,2008=2*2*2*251.
then: s(2004^n)=s(2^(2*n))*s(3^n)*s(167^n)
then: 对于一个素数p,则s(p^n)=1+p+p^2+p^3+...+p^n=(p^(n+1)-1)/(p-1) 等比数列公式。
then: s(2004^n)=(2^(2*n+1)-1)/1 * (3^(n+1)-1)/2 * (167^(n+1)-1)/167
一个小知识:(a*b/c)%mod 设m1=a,m2=b/c; 则m1mod=(m1%mod+mod)%mod; m2mod=(b%(c*mod)+c*mod)%mod,m2mod/=c; 最后结果=(m1mod%mod)*(m2mod%mod)%mod;
//1852#include<iostream>#include<cstring>#include<cstdio>using namespace std;int n,k;int quickpow(int a,int b,int K){if(K==0) return 1;__int64 res=1,tmp;tmp=a%K;while(b){if(b&1) res=(res%K)*(tmp%K)%K;b>>=1;tmp=(tmp%K)*(tmp%K)%K;}return (int)res;}int main(){while(~scanf("%d%d",&n,&k),n+k){int m1=quickpow(2,3*n+1,k)-1;m1=(m1+k)%k;int m2=quickpow(251,n+1,250*k)-1;m2=(m2+250*k)%(250*k);m2/=250;int M=(m1%k)*(m2%k)%k;printf("%d\n",quickpow(2008,M,k));}return 0;}
//1452#include<iostream>#include<cstdio>#include<cstring>using namespace std;int quickpow(int a,int b){ if(b==0) return 1; int res=1; while(b) { if(b&1) res=res*a%29; b>>=1; a=a*a%29; } return res%29;}int main(){ int x; while(~scanf("%d",&x),x) { int k=((quickpow(2,2*x+1)-1)*(quickpow(3,x+1)-1)*(quickpow(167,x+1)-1)*15*18)%29; printf("%d\n",k); } return 0;}
1 0
- HDU 1852,1452 a^n的约数和
- n的约数和
- A^B的所有约数和
- HDU 1452 Happy 2004(约数和定理)
- hdu-1452(约数和定理+求逆元)
- 计算n个数的最大共约数和最小公倍数
- sqr(n)的约数个数
- N的所有约数之和
- Poj 1845 Sumdiv -- A的所有约数和
- 牛客练习赛8 A-约数个数的和
- 给个n,求1到n的所有数的约数个数的和~
- 给个n,求1到n的所有数的约数个数的和~
- 【原创】【数论】HDU-1452 Happy 2004(约数和定理)
- 欧拉函数性质证明 : n所有约数的欧拉函数和等于n
- 欧拉函数性质证明 : n所有约数的欧拉函数和等于n
- uva11728-约数的和
- 整数的约数和
- hdu 4961 枚举约数O(n*sqrt(n))
- 字符串常量 解析
- HDU1007 Quoit Design 分治
- tableView的优化方法
- MySql 出现忘记密码时 应该如何登陆?
- 动态规划方法解旅行商问题(TSP Traveling Salesperson Problem)
- HDU 1852,1452 a^n的约数和
- C++卷积神经网络实例:tiny_cnn代码详解(8)——partial_connected_layer层结构类分析(上)
- jquery ajax的使用
- 一看就懂的View测量过程介绍
- CoInitialize浅析
- <点点滴滴>Spark的调度模块和Spark容错
- 学习JAVA之路(四、java流程控制语句)
- 【持久化框架】Mybatis与Hibernate的详细对比
- send和recv函数解析