您的位置:首页 > 其它

LeetCode 372. Super Pow (快速幂取模)

2017-01-25 11:29 399 查看
Your task is to calculate ab mod 1337 where a is a positive integer and b is
an extremely large positive integer given in the form of an array.

Example1:
a = 2
b = [3]

Result: 8


Example2:
a = 2
b = [1,0]

Result: 1024


题目链接:https://leetcode.com/problems/super-pow/

题目分析:ans = ans^10 + qpow(a, b[i])

public class Solution {

public static final int MOD = 1337;

public int qpow(int x, int n) {
int res = 1;
x %= MOD;
while (n > 0) {
if ((n & 1) == 1) {
res = (res * x) % MOD;
}
x = (x * x) % MOD;
n >>= 1;
}
return res;
}

public int superPow(int a, int[] b) {
int ans = 1, len = b.length;
for (int i = 0; i < len; i ++) {
ans = (qpow(ans, 10) * qpow(a, b[i])) % MOD;
}
return ans;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: