Calculate the an % b where a, b and n are all 32bit integers.
Example
For 231 % 3 = 2
For 1001000 % 1000 = 0
2. 如果n 为偶数可以转化为 (a^(n/2) * a^(n/2) ) %b = (a^(n/2)%b * a^(n/2)%b)%b
class Solution {
/*
* @param a, b, n: 32bit integers
* @return: An integer
*/
public int fastPower(int a, int b, int n) {
//(a * b) % c = (a % c * b % c) % c
if(n == 0) return 1 % b;
if(n == 1) return a % b;
long tmp = fastPower(a, b, n / 2);
long res = (tmp * tmp) % b;
if(n % 2 == 1) {
res = (res * (a % b)) % b;
}
return (int)res;
}
};