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) {
// write your code here
long ans = 1, temp = a;
while (n != 0) {
if (n % 2 == 1) {
ans = ans * temp % b;
}
temp = temp * temp % b;
n /= 2;
}
return (int)ans % b;
}
}
update:
这个的主要的问题是,在控制时间复杂度的基础之上使用之前的计算结果;
判读n是否会使奇数,是奇数的时候可以直接使用这个值与ans相乘,然后在使用
n是偶数的判断;
是偶数就直接进行处理;然后对乘方数进行除二;