FZU1752快速幂取模+乘法的加速
2014-07-01 15:44
316 查看
Description
Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,B,C<2^63).
Input
There are multiply testcases. Each testcase, there is one line contains three integers A, B and C, separated by a single space.
Output
For each testcase, output an integer, denotes the result of A^B mod C.
Sample Input
Sample Output
Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,B,C<2^63).
Input
There are multiply testcases. Each testcase, there is one line contains three integers A, B and C, separated by a single space.
Output
For each testcase, output an integer, denotes the result of A^B mod C.
Sample Input
3 2 4 2 10 1000
Sample Output
1 24
由于a,b,c都比较大 简单的快速幂取模算法中 的乘法得到的结果 比较大可能超 long long 的范围
因此需要将乘法转换为二进制的加法
#include <iostream> #include <cstdio> using namespace std; typedef unsigned long long LL; //模拟乘法,把乘法变成二进制加法。 LL mul(LL a,LL b,LL m)//二分 求 a*b%m; { LL res=0,tmp=a%m; while(b) { if(b&1) if((res+=tmp)>=m) res-=m; if((tmp<<=1)>=m) tmp-=m; b>>=1; } return res; } LL quick_mod(LL a,LL b,LL m)//二分求a^b%m { LL ans = 1; a%=m; while(b) { if(b%2==1) { ans=mul(ans,a,m); b--; } b/=2; a=mul(a,a,m); } return ans; } int main() { LL a,b,m; while(cin>>a>>b>>m){ cout<<quick_mod(a,b,m)<<endl; } return 0; }
相关文章推荐
- codevs1281 矩阵乘法 快速幂 !!!手写乘法取模!!! 练习struct的构造函数和成员函数
- codevs1281 矩阵乘法 快速幂 !!!手写乘法取模!!! 练习struct的构造函数和成员函数
- codevs1281 矩阵乘法 快速幂 !!!手写乘法取模!!! 练习struct的构造函数和成员函数
- FZU Problem 1759 Super A^B mod C(幂次循环节+快速乘法)
- FZU 1649 Prime number or not (米勒拉宾大素数判断+快速幂取模+随机数模板)
- codevs1281 矩阵乘法 快速幂 !!!手写乘法取模!!! 练习struct的构造函数和成员函数
- codevs1281 矩阵乘法 快速幂 !!!手写乘法取模!!! 练习struct的构造函数和成员函数
- FZU Problem 1752 A^B mod C 快速幂乘
- FZU 1752 A^B mod C(快速加、快速幂)
- codevs1281 矩阵乘法 快速幂 !!!手写乘法取模!!! 练习struct的构造函数和成员函数
- codevs1281 矩阵乘法 快速幂 !!!手写乘法取模!!! 练习struct的构造函数和成员函数
- codevs1281 矩阵乘法 快速幂 !!!手写乘法取模!!! 练习struct的构造函数和成员函数
- codevs1281 矩阵乘法 快速幂 !!!手写乘法取模!!! 练习struct的构造函数和成员函数
- Fzu 1752 A^B mod C【快速幂+快速积+细节处理】
- codevs1281 矩阵乘法 快速幂 !!!手写乘法取模!!! 练习struct的构造函数和成员函数
- codevs1281 矩阵乘法 快速幂 !!!手写乘法取模!!! 练习struct的构造函数和成员函数
- FZU 1752 A^B mod C (快速幂+快乘)
- codevs1281 矩阵乘法 快速幂 !!!手写乘法取模!!! 练习struct的构造函数和成员函数
- fzu 1752 快速幂及中间防爆long long
- codevs1281 矩阵乘法 快速幂 !!!手写乘法取模!!! 练习struct的构造函数和成员函数