题目描述 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
数据范围及提示 Data Size & Hint
原理:
A*B%K = (A%K )*(B% K )%K
1 #include<iostream> 2 using namespace std; 3 long long b,p,k,a; 4 int f(int p) 5 { 6 if(p==0)return 1; 7 a=f(p/2)%k; 8 a=(a*a)%k; 9 if(p%2==1)return (a*b)%k; 10 else return a; 11 } 12 int main() 13 { 14 cin>>b>>p>>k; 15 int c=b; 16 b%=k; 17 cout<<c<<"^"<<p<<" mod "<<k<<"="<<f(p); 18 return 0; 19 }