140. 快速幂
计算
a ^ n \% b
a
n
%
b
其中a,b和n都是32位的非负整数。
样例
例如 2
31
% 3 = 2
例如 100
1000
% 1000 = 0
挑战
O(logn)
public class Solution {
/**
* @param a: A 32bit integer
* @param b: A 32bit integer
* @param n: A 32bit integer
* @return: An integer
*/
public int fastPower(int a, int b, int n) {
if (n == 0) return 1 % b;
if (n == 1) return a % b;
long sum=fastPower(a, b, n / 2);
if(n%2==1){
sum=sum*sum%b;
return (int)(sum*a%b);
}else{
return (int)(sum*sum%b);
}
}
}