标签:
__int64 pow3(inta,intb)//快速幂
{
__Int64 r=1,base=a;
while(b)
{
if(b&1)
r*=base;
base*=base;
b>>=1;//①
}
return r;
}
__int64 qpow(int a,int b,int c)
{
__int64 r=1,base=a;
while(b)
{
if(b&1)
r=(r*base)%c;//②
base=(base*base)%c;
b>>=1;
}
return r%c;
}
① >> 右移 将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0
② r*=base%c;//这是错误的写法,不能对快速幂求模的公式直接加上%r,*=注意
③ 快速幂取模思想: a*b mod c= ((a mod c) *b) mod c
标签:
原文地址:http://www.cnblogs.com/travelller/p/4454398.html