模
计算除以m的余数,叫做对m取模
将a,b对m取模的结果相同,记为a≡b(mod m),即a mod m == b mod m
如果a≡b(mod m),且c≡d(mod m):
a+b ≡ c+d (mod m)
a*b ≡ c*d (mod m)
取模的性质
加:(a+b) mod m=((a mod m)+(b mod m)) mod m
减:(a-b) mod m=((a mod m)-(b mod m)) mod m
乘:(a*b) mod m=((a mod m)*(b mod m)) mod m
快速幂
幂运算,当n很大时,一个一个乘要运算n次。这样就太慢了,那么有一个比较简单的思路:
先算,然后再算,…,一直算到。
那么实现方法可以用分治法:
int fastPow(int a,int n){
if(n==1) return a;
int temp=fastPow(a,n/2);//分治
if(n%2==1){
return temp*temp*a;//奇数个a
}else{
return temp*temp;//偶数个a
}
}
接下来是更好的方法(快速幂):
1、幂次与二进制
以分解成幂