1、求 % m
typedef long long ll;
ll pow(ll a,ll b,ll m)
{
ll ans=1;
for(int i=0;i<b;i++)
{
ans=ans*a%m;
}
return ans;
}
2、快速幂求 % m(递归写法)
typedef long long ll;
ll pow(ll a,ll b,ll m)
{
if(b==0) return 1;
if(b%2==0)
{
ll mul=pow(a,b/2,m);
return mul*mul%m;
}
else
{
return a*pow(a,b-1,m)%m;
}
}
3、快速幂求 % m(迭代写法)
b化二进制
算法笔记 P136
//迭代写法
typedef long long ll;
ll pow(ll a,ll b,ll m)
{
ll ans=1;
while(b>0)
{
if(b&1)
{
ans=ans*a%m;
}
a=a*a%m; //别忘记取模!!!!!!
b>>=1; //b右移一位
}
return ans;
}
注:实际应用中,迭代写法与递归写法在效率上差别不大。