Fast Power

时间:2023-03-09 15:09:33
Fast Power

Calculate the a^n % b where a, b and n are all 32bit integers.

Example

For 2^31 % 3 = 2

For 100^1000 % 1000 = 0

分析:

利用公式:

(a * b) % p = (a % p * b % p) % p
a^n % b = (a^(n/2) * a^(n/2) * (a)) %b = ((a^(n/2) * a^(n/2))%b * (a)%b) %b = ((a^(n/2)%b * a^(n/2)%b)%b * (a)%b) %b

 class Solution {
/*
* @param a, b, n: 32bit integers
* @return: An integer
*/
public int fastPower(int a, int b, int n) { if (a == ) return ;
if (n == ) return % b;
if (n == || a == ) return a % b; long temp = fastPower(a, b, n / );
temp = temp * temp;
temp = temp % b;
if (n % == ) {
temp = temp * (a % b);
return (int)(temp % b);
} else {
return (int)temp;
}
}
};