欧拉定理
若\(gcd(a,m)=1\),则\(a^{φ(m)}≡1\ (mod\ m)\)
扩展欧拉定理
若\(b\geqslant φ(m)\),则\(a^b≡a^{b\ mod\ φ(m)+φ(m)}\ (mod\ m)\)
利用扩展欧拉定理,可以处理快速幂取模,例如【模板】欧拉定理和上帝与集合的正确用法
\(a^b \bmod m\)
\(code:\)
ll qp(ll x,ll y)
{
ll ans=1;
while(y)
{
if(y&1) ans=(ans*x)%m;
x=(x*x)%m;
y>>=1;
}
return ans%m;
}
ll get_phi(ll x)
{
ll ans=x;
for(int i=2;i<=sqrt(x);++i)
{
if(x%i) continue;
ans=ans*(i-1)/i;
while(x%i==0) x/=i;
}
if(x>1) ans=ans*(x-1)/x;
return ans;
}
......
for(int i=1;i<=len;++i)
{
b=((b<<1)+(b<<3)+(str[i]^48));
if(b>=phi) b%=phi,flag=true;
}
if(flag) b+=phi;
printf("%lld",qp(a,b));
来源:https://www.cnblogs.com/lhm-/p/12229648.html