关于快速幂取模的问题
#include<iostream>
using namespace std;
typedef long long LL;
LL Pow(LL a,LL b,LL p){
a%=p;
LL res=1;
while(b){
if(b&1){
res=(res*a)%p;
res%=p;
}
a=(a*a)%p;
b>>=1;
}
return res;
}
int main(){
LL a,b,p,res;
cin>>a>>b>>p;
res=Pow(a,b,p);
//res%=p; 不加这个只过了80%
cout<<res<<endl;
return 0;
}
我有一个疑惑,明明我每次计算res之后,都会模一次p。
但是这样却只是通过了80%的数据。
然而当我在输出前让res再对p取模一次,就能ac,这是什么情况?
腾讯成长空间 6074人发布