对于快速模幂,一般考虑用幂转换为二进制的形式,然后用(a*b)%c=(a%c)(b%c)%c这个公式推导
代码如下:
1 #include<iostream> 2 using namespace std; 3 4 int quick(int a,int b,int c) 5 { 6 if(b==0) 7 return 0; 8 int A=1; 9 int T=a%c; 10 while(b!=0) 11 { 12 if(b&1) 13 A=(A*T)%c; 14 b>>=1; 15 T=(T*T)%c; 16 } 17 return A; 18 } 19 int main() 20 { 21 int b,p,k; 22 cin>>b>>p>>k; 23 cout<<b<<"^"<<p<<" mod "<<k<<"="<<quick(b,p,k); 24 }