描述:m,n,k,为整数,求 (m^n)%k=?
正经代码:
#include<stdio.h>
using namespace std;
int main(){
int m,n,k;
scanf("%d%d%d",&m,&n,&k);
int ans=1;
for(;n;n>>=1,m=(long long)m*m%k)
if(n&1)
ans=(long long)ans*m%k;
printf("%d\n",ans);
return 0;
}
代码牛皮*:
#include<stdio.h>
#include<iostream>
using namespace std;
int main(){
int m,n,k;
scanf("%d%d%d",&m,&n,&k);
int ans=1;
cout<<"m="<<m<<" n="<<n<<" k="<<k<<endl;
for(;n;n>>=1,m=(long long)m*m%k){
cout<<" --------\n n="<<n<<endl<<" n>>1 ="<<(n>>=1)<<endl;
cout<<" m="<<m<<endl;
if(n&1)
ans=(long long)ans*m%k;
cout<<" n&1="<<(n&1)<<endl<<" ans="<<ans<<endl;
}
printf("%d\n",ans);
return 0;
}
运行结果1,2,3,: