可以每乘一次取一次模的方式来求一个数幂的模,时间复杂度为O(n),但是当n很大时,算法不是很理想,下面用分治的方法来求,其复杂度为O(logn)
int pow_mod(int a, int n, int m) {
if (n == 0) return 1;
ll x = pow_mod(a, n / 2, m);
int ans = x*x%m;
if (n % 2 == 1) ans = ans*a%m;
return (int)ans;
}
可以每乘一次取一次模的方式来求一个数幂的模,时间复杂度为O(n),但是当n很大时,算法不是很理想,下面用分治的方法来求,其复杂度为O(logn)
int pow_mod(int a, int n, int m) {
if (n == 0) return 1;
ll x = pow_mod(a, n / 2, m);
int ans = x*x%m;
if (n % 2 == 1) ans = ans*a%m;
return (int)ans;
}