关于快速幂取模的问题
#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,这是什么情况?