欧拉定理
若\(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