计算an % b,其中a,b和n都是32位的整数。
样例
例如 231 % 3 = 2
例如 1001000 % 1000 = 0
挑战
O(logn)
********************************************************
a^n % b
1.如果n 为奇数可以转化为 (a^(n/2) * a^(n/2) * a ) %b = ((a^(n/2)%b * a^(n/2)%b)%b * a%b) %b
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) {
// write your code here
if(n == 0)
return 1 % b;
if(n== 1)
return a % b;
long temp = fastPower(a, b, n/2);
if((n & 1) == 1)
return (int) (((temp * temp)%b)*a%b);
else
return (int) (temp*temp%b);
}
};