快速幂取模
来源:互联网 发布:拍摄淘宝服装图片技巧 编辑:程序博客网 时间:2024/06/07 21:04
用二分,使复杂度由 O(n) 变为 O(logn)
#include<iostream>#include<cstdio>using namespace std;/// (b^n)mod m; (a*b mod m) = (a mod m)*(b mod m)mod m O(log n)/// (b^n)mod m; (a - b ) mod m =( (a mod m)-(b mod m) + n ) mod m ) O(log n)/// (b^n)mod m; (a + b ) mod m =( (a mod m)+(b mod m) mod m ) O(log n)int mod(int b,int n,int m) // 位运算{ int ans=1; while(n){ if(n&1) ans=(ans*b)%m; b=(b*b)%m; n=n>>1; } return ans;}int mod_1(int b,int n,int m) // O(log n) 递归{ if(n==0) return 1; int x=mod_1(b,n/2,m); long long ans=(long long)x*x%m; if(n%2) ans=ans*b%m; /// n&1 return (int)ans;}int main(){ int b,n,m; while(scanf("%d%d%d",&b,&n,&m)) { printf("%d ",mod(b,n,m)); printf("%d\n",mod_1(b,n,m)); } return 0;}/**12996 227 37909 == 7775*/
0 0
- 快速幂,快速幂取模
- 快速幂 + 快速幂取模
- 快速幂 快速幂取模
- 快速幂 快速幂取模
- 【快速幂】【快速幂取模】
- 快速幂,快速幂取模,矩阵快速幂
- 快速幂取模
- 快速幂取模
- 快速幂取模
- 快速幂取模
- 快速幂取模
- 快速幂取模
- 快速幂取模
- 快速幂取模
- 快速幂取模
- 快速幂取模
- 快速幂取模
- 快速幂取模
- 一、CXF WebService准备工作
- hadoop单机伪分布式环境搭建和mahout试用
- 匹配 解题报告
- 二、CXF 入门示例
- swift类和接口的使用
- 快速幂取模
- caffe框架翻译和理解
- Java 成员初始化过程
- 三、CXF对Interceptor拦截器的支持
- EA建模时,容易混乱的几点
- NGUI出现Shader wants normals, but the mesh UIAtlas doesn't have them
- 网页固定侧栏的做法
- 手动脱FSG壳实战
- 把二叉树打印成多行