很显然超时了
//平方次数要考虑0次; #include<stdio.h> typedef long long ll; int main() { ll a,b,p; scanf("%lld %lld %lld",&a,&b,&p); if(b==0) printf("%lld\n",1%p); else { for(int i=1;i<b;i++){ a*=a; a%=p; } printf("%lld\n",a%p); } return 0; }
优化之后的
//平方次数要考虑0次; //学习了位运算>> << #include<stdio.h> typedef long long ll; ll a,b,p,res=1; int main() { scanf("%lld %lld %lld",&a,&b,&p); if(b==0) printf("%lld\n",1%p); else { while(b){ if(b&1) res=res*a%p; a=a*a%p; b>>=1; } printf("%lld\n",res%p); } return 0; }