思路:非常简单,一个while带过去,每一次,只要b不是二的倍数,那sum=(sum*a)%c
同时,a要变成a², 然后要边算边mod c 然后b再除以二(这里即使是单数也要除以二,结果就会是(a-1)/2) 最后输出 。
#include<bits/stdc++.h>
using namespace std;
int main(){
unsigned long long a,b,c,sum=1,k=1;
cin>>a>>b>>c;
int x=a,y=b;
while(b){
if(b&1) sum=(sum*a)%c;
a=a*a,a%=c;
b=b>>1;
}
cout<<x<<'^'<<y<<' '<<"mod"<<' '<<c<<'='<<sum;
cout<<endl;
return 0;
}