快速幂
引理:积的取余=取余的积的取余
模板:
long long Mode(long long a, long long b, long long mode) { long long sum = 1; a = a % mode; while (b > 0) { if (b % 2 == 1) //判断是否是奇数,是奇数的话将多出来的数事先乘如sum sum = (sum * a) % mode; b /= 2; a = (a * a) % mode;// 不断的两两合并再取模,减小a和b的规模 } return sum; }
&是AND运算符,是一种逻辑运算符。
其运算规则如下:
1&1=1;真&&真=真。
1&0=0;真&&假=假。
0&1=0;假&&真=假。
0&0=0;假&&假=假。
long long Mode(long long a, long long b, long long mode) { long long sum = 1; while (b) { if (b & 1) { sum = (sum * a) % mode; b--; } b /= 2; a = a * a % mode; } return sum; }