int qpow(int a,int b,int p){ int ans=1; bool flag=0;//1.扩展欧拉定理分讨需要的tag。注意这题不能像Power Tower一样取模时暴力加p,稍不留神就会炸ll!! if(a>=p){ flag=1; a%=p; } //2.不写这个 100->60 while(b>0){ if(b&1){ ans=ans*a; if(ans>=p){ flag=1; ans=ans%p;//3.分讨tag。 } } a=a*a; if(a>=p){ flag=1; a=a%p;//分讨tag。 } b>>=1; } //注意最后超过模数后要加p return flag?ans%p+p:ans; }