FZU 1752 A^B mod C (快速幂)
2014-08-13 20:41
357 查看
Problem 1752 A^B mod C
Accept: 714 Submit: 3084
Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,B,C<2^63).
There are multiply testcases. Each testcase, there is one line contains three integers A, B and C, separated by a single space.
For each testcase, output an integer, denotes the result of A^B mod C.
3 2 42 10 1000
124
FZU 2009 Summer Training IV--Number Theory
题意很简单,求A^BmodC
但是数据范围很大,如果直接快速幂会爆 unsigned long long.
所以在计算快速幂的时候通过二进制计算A*B;
Accept: 714 Submit: 3084
Time Limit: 1000 mSec Memory Limit : 32768 KB
Problem 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
3 2 42 10 1000
Sample Output
124
Source
FZU 2009 Summer Training IV--Number Theory 题意很简单,求A^BmodC
但是数据范围很大,如果直接快速幂会爆 unsigned long long.
所以在计算快速幂的时候通过二进制计算A*B;
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <cmath> #include <string> #include <sstream> #include <vector> #include <queue> #include <set> #include <map> #include <ctime> using namespace std; typedef unsigned long long LL; LL mul(LL a,LL b,LL c){ LL ans = 0,temp = a%c; while(b){ // cout<<"ans"<<endl; if(b&0x1){ if((ans+=temp)>=c){ ans-=c; } } if((temp<<=1)>=c){ temp-=c; } b>>=1; } return ans; } LL modPow(LL a,LL b,LL m){ LL ret = 1; while(b){ // cout<<"ret"<<endl; if(b&1){ ret = mul(ret,a,m); }//ret = ret*a%m; //a = a*a%m; a = mul(a,a,m); b>>=1; } return ret; } int main() { LL a,b,c; while(scanf("%I64d%I64d%I64d",&a,&b,&c)!=EOF){ LL sum = modPow(a,b,c); printf("%I64d\n",sum); } return 0; }
相关文章推荐
- FZU 1752 A^B mod C(快速加、快速幂)
- fzu 1752 A^B mod C fzu 1650 AB mod C
- FZU 1650 1752 a^b mod
- FZU Problem 1752 A^B mod C 快速幂乘
- fzu 1752 A^B mod C(快速乘+快速幂取模)
- fzu1752 A^BmodC
- Fzu 1752 A^B mod C【快速幂+快速积+细节处理】
- FZU 1752 Quickmod Quickmulti
- FZU 1752 A^B mod C
- FZU 1759 Super A^B mod C(数论)
- FZU Problem 1759 Super A^B mod C(幂次循环节+快速乘法)
- 51Nod 1046 A^B Mod C(日常复习快速幂)
- fzu 1759 Super A^B mod C
- fzu - 1752 Problem 1752 A^B mod C
- FZU 1759 Super A^B mod C
- FZU-1759 Super A^B mod C
- fzu - Problem 1759 Super A^B mod C
- FZU1752快速幂取模+乘法的加速
- FZU Super A^B mod C
- FZU 1752 A^B mod C