题目描述
输入b,p,k的值,求b^p mod k的值。其中b,p,k*k为长整型数。
输入输出格式
输入格式:
三个整数b,p,k.
输出格式:
输出“b^p mod k=s”
s为运算结果
输入输出样例
输出样例#1:
非递归版本
2^10 mod 9=7
算法原理:
b^p = b^(p-1) * b^(p-1)
AC代码:
inline long long pow(long long x,long long y) { long long res = 1,kk = x; while(y) { if(y % 2 == 1) res = res * kk % mod; kk = kk * kk % mod; y >>= 1; } return res; }
1 #include<iostream> 2 #include<iomanip> 3 #include<cstdio> 4 using namespace std; 5 long long b,p,k; 6 long long ksm(long long p){ 7 if(b==0) return 0; 8 if(p==0) return 1; 9 long long x=ksm(p/2)%k; 10 if(p%2==0) return x*x%k; 11 else return x*x%k*b%k; 12 } 13 int main(){ 14 cin>>b>>p>>k; 15 cout<<b<<"^"<<p<<" mod "<<k<<'='<<ksm(p)%k; 16 return 0; 17 }