须知:
编程题中有时会出现大数的乘方取模,此时我们不能使用简单的pow函数。
例如(a^b)%m,若a^b的结果超出计算机数据的存储范围,再去取模,结果显然不对,我们为了防止溢出,可以先分别对a取模,b取模,再求和,输出的结果相同。
a mod b表示a除以b的余数。有下面的公式:
(a + b) % m = (a%m+ b%m) %m
(a - b) % m = ( (a%m- b%m) + m) %m
(a * b) % m = (a%m)*(b%m) %m (a ^ b)% m = ((a%m)^b)%m
常见的方法有:二分思想、快速幂取模。
最简单的做法:
long long Pow(long long a,long long b){
long long ans = 1;
for(int i = 0;i < b;i++){
ans *= a;
}
return ans;
}
可以看到,算法的时间复杂度是O(n)。为了降低