1046 A^B Mod C(快速幂取模)
1046 A^B Mod C(51NOD基础题)
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
给出3个正整数A B C,求A^B Mod C。
例如,3 5 8,3^5 Mod 8 = 3。
Input
3个正整数A B C,中间用空格分隔。(1 <= A,B,C <= 10^9)
Output
输出计算结果
Input示例
3 5 8
Output示例
3
/* 1046 A^B Mod C(快速幂取模) 给出3个正整数A B C,求A^B Mod C。 (1 <= A,B,C <= 10^9) */ #include <cstdio> #define LL long long LL quickmod(LL x , LL y , LL p ){ LL re = 1 ; while(y){// x 表示二进制 y 上每个位置的 权值 // y 表示 x 的次幂 if(y&1==1){ re = (re * x ) % p ; y-- ; } y>>=1 ; x = (x * x )%p ; } return re ; } int main(){ LL a , b , c ; while(~scanf("%lld%lld%lld" , &a , &b , &c)){ LL result = quickmod(a , b , c ) ; printf("%lld\n" , result) ; } return 0 ; }