【快速幂】
来源:互联网 发布:大数据时代影响 编辑:程序博客网 时间:2024/06/17 07:54
一、快速幂取模
/******快速幂取模******/int f(int a,int b,int n){ int t,y; t=1; y=a; while(b!=0) { if(b&1==1) { t=t*y%n; } y=y*y%n; b=b>>1; } return t;}int main(){ int a,b,n; while(scanf("%d%d%d",&a,&b,&n)!=EOF) { printf("%d\n",f(a,b,n)); } return 0;}
二、幂取模
/********幂取模*******/int pow_mod1(int a,int n,int m) //O(n);{ int ans=1; for(int i=0;i<n;i++) { ans=(int)((long long)ans*a%m); } return ans;}int pow_mod2(int a,int n,int m) //O(logn),类似二分的分治法,递归;{ if(n==0) return 1; int x=pow_mod2(a,n/2,m); long long ans=(long long )x*x%m; if(n%2==1) ans=ans*a%m; return (int)ans;}int main(){ int a,n,x; while(scanf("%d%d%d",&a,&n,&x)!=EOF) { printf("pow_mod1():"); printf("%d\n",pow_mod1(a,n,x)); printf("pow_mod2():"); printf("%d\n",pow_mod2(a,n,x)); } return 0;}
三、求幂
/******二分求幂******/int pow4(int a,int b){ int r=1,base=a; while(b!=0) {// printf("b:%d\n",b); if(b&1) {// printf("b:%d\n",b); r*=base;// printf("r:%d\n",r); } base*=base;// printf("base:%d\n",base); b>>=1;// printf("b:%d\n",b); } return r;}int main(){ int a,b; while(scanf("%d%d",&a,&b)!=EOF) printf("%d\n",pow4(a,b)); return 0;}
/*****快速求幂******/int pow3(int x,int n){ if(n==0) return 1; else { while((n&1)==0) { n>>=1;// printf("n:%d\n",n); x*=x;// printf("x:%d\n",x); } }// printf("***\n"); int result=x;// printf("result:%d\n",result);// printf("***\n"); n>>=1;// printf("n:%d\n",n); while(n!=0) { x*=x;// printf("x:%d\n",x); if((n&1)!=0) { result*=x;// printf("result:%d\n",result); } n>>=1;// printf("n:%d\n",n); } return result;}int main(){ int a,b; while(scanf("%d%d",&a,&b)!=EOF) printf("%d\n",pow3(a,b)); return 0;}
/***内容来自小白书和百度百科快速幂***/
0 0
- 快速矩阵快速幂
- 快速幂,快速幂取模
- 快速幂 + 快速幂取模
- 快速幂 快速幂取模
- 快速幂&&快速乘法
- 快速幂&快速乘
- 快速幂 快速乘法
- 快速幂 快速幂取模
- 快速幂+快速乘法
- 【快速幂】【快速幂取模】
- 快速乘法-快速幂
- 快速乘/快速幂/矩阵快速幂
- 快速乘 快速幂 矩阵快速幂
- 快速幂,快速幂取模,矩阵快速幂
- 快速幂
- 快速幂
- 快速幂
- 快速幂
- NOIP应试技巧
- 【HDU 5914 Sequence I】+ 2016中国大学生程序设计竞赛(长春)-重现赛
- size()\pyrDown\pyrUp
- 【连接调试】之迷茫的2440第一课
- js bug: Origin 'null' is therefore not allowed access.
- 【快速幂】
- mac下修改mysql初始密码问题
- 安卓开发之弹出输入法后顶起布局最简单有效方法
- LeetCode 445. Add Two Numbers II
- Solr安装及使用示例
- 【图论最短路】【CQBZOJ 2432】Maze
- Unity3D占用内存太大的解决方法
- 利用ViewStub实现错误页面的展示
- 【NOIP2016提高A组集训第14场11.12】最近公共祖先