140. 快速幂
计算a的n次幂 % b,其中a,b和n都是32位的整数。
样例
例如 231 % 3 = 2
例如 1001000 % 1000 = 0
class Solution { public: /* * @param a: A 32bit integer * @param b: A 32bit integer * @param n: A 32bit integer * @return: An integer */ int fastPower(int a, int b, int n) { // write your code here /* * https://baike.baidu.com/item/%E5%8F%96%E6%A8%A1%E8%BF%90%E7%AE%97 * (a * b) % p = (a % p * b % p) % p * n如果是基数:((temp * temp) % b) * a % b; * n如果是偶数: temp * temp % b; * */ if (n == 0) { return 1 % b; } if (n == 1) { return a % b; } long long temp = fastPower(a, b, n / 2); if (n & 1) { return ((temp * temp) % b) * a % b; } else { return temp * temp % b; } } };