数论学习笔记2——快速幂取模
大佬肯定都是暴力循环乘出来的。
咳咳,考虑指数n在二进制下第A1Aj下为1,那么显而易见~ mn=
∏
i
=
1
j
m
\prod_{i=1}^jm
∏i=1jm(1<<Ai)
由低位开始向前递推出每一位的m(1<<Ai)取模后的值,累乘取模。
贴下代码:
typedef long long ll;
ll fastpow(ll x,ll y,ll mod)
{
ll ans=1;
for(;y;y>>=1,x=x*x%mod)
if(y&1)
ans=ans*x%mod;
return ans;
}