时间限制: 1 s空间限制: 128000 KB题目等级 : 钻石 Diamond
题目描述 Description
输入b,p,k的值,编程计算bp mod k的值。其中的b,p,k*k为长整型数(2^31范围内)。
输入描述 Input Description
b p k
输出描述 Output Description
输出b^p mod k=?
=左右没有空格
样例输入 Sample Input
2 10 9
样例输出 Sample Output
2^10 mod 9=7
思路
快速幂
代码实现
1 #include<cstdio> 2 long long b,p,k,ans,a; 3 long long f(int x){ 4 if(x==0) return 1; 5 a=f(x/2)%k; 6 a=(a*a)%k; 7 if(x%2) a=(a*b)%k; 8 return a; 9 } 10 int main(){ 11 scanf("%d%d%d",&b,&p,&k); 12 ans=b; 13 printf("%d^%d mod %d=%d",ans,p,k,f(p)); 14 return 0; 15 }