FZU1759Super A^B mod C(快速幂取模) 公式
2014-07-01 16:40
405 查看
Description
Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,C<=1000000000,1<=B<=10^1000000).
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,C<=1000000000,1<=B<=10^1000000).
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 有一个公式 即
A^x = A^(x % Phi(C) + Phi(C)) (mod C)
公式的具体证明:http://hi.baidu.com/aekdycoin/item/e493adc9a7c0870bad092fd9
// A^x = A^(x % Phi(C) + Phi(C)) (mod C),其中x≥Phi(C) #include <iostream> #include <cstring> #include <cstdio> using namespace std; typedef long long LL; char bb[1000001]; LL a,m; LL phi(LL n) { LL rea=n; for(int i=2;i*i<=n;i++){ if(n%i==0){ rea=rea-rea/i; while(n%i==0) n/=i; } } if(n>1) rea=rea-rea/n; return rea; } LL quick_mod(LL a,LL b,LL m) { LL ans=1; a%=m; while(b){ if(b&1){ ans=ans*a%m; b--; } b>>=1; a=a*a%m; } return ans; } int main() { while(~scanf("%lld",&a)){ scanf("%s",bb); scanf("%lld",&m); LL t=phi(m); int l=strlen(bb); LL b=0; for(int i=0;i<l;i++){ b=b*10+bb[i]-'0'; while(b>=t) b-=t; } b+=t; printf("%lld\n",quick_mod(a,b,m)); } return 0; }
相关文章推荐
- FZU 1759 Super A^B mod C (快速幂+指数循环节)
- Super A^B mod C FZU - 1759(欧拉降幂+快速密码)
- FZU 1759 Super A^B mod C(数论+快速幂+欧拉函数)
- FZU 1759-Super 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(幂次循环节+快速乘法)
- FZU 1759 Super 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(快速幂取模+欧拉函数)
- Super A^B mod C - FZU - 1759 - 降幂公式
- FZU 1759 Super A^B mod C
- FZU oj 1759 Super A^B mod C (快速幂+指数循环节+欧拉函数)
- fzu 1759 Super A^B mod C
- FZU 1759 Super A^B mod C(数论)
- fzu 1759Super A^B mod C 指数循环节
- FZU 1759 Super A^B mod C (欧拉函数,降幂公式)
- FZU 1759 Super A^B mod C 指数循环节
- FZU 1759 Super A^B mod C (欧拉降幂)