36分代码:
#include<iostream>
#include<cstdio>
using namespace std;
long long k;
long long fp(int b,int p){
long long ans=1;
while(p>0){
if(p%2!=0)ans=ans*b%k;
b=b*b%k;
p=p>>1;
}
return ans;
}
int main(){
long long b,p;
cin>>b>>p>>k;
int bb=b,pp=p;
printf("%d^%d mod %d=%d",bb,pp,k,fp(b,p)%k);
return 0;
}
100分代码:
#include<iostream>
#include<cstdio>
using namespace std;
long long k,b,p,bb,pp;
long long fp(){
long long ans=1;
while(p>0){
if(p%2!=0)ans=ans*b%k;
b=b*b%k;
p=p>>1;
}
return ans;
}
int main(){
cin>>b>>p>>k;
bb=b;pp=p;
printf("%d^%d mod %d=%d",bb,pp,k,fp()%k);
return 0;
}
只有一处变化……
题目传送门