372. 超級次方
你的任務是計算 ab 對 1337 取模,a 是一個正整數,b 是一個非常大的正整數且會以陣列形式給出,
a^b=(a^(b/10))^10*a^(b%10)
每次算最后一位,前面的遞回處理,從最后一位倒置處理
class Solution {
int MOD = 1337;
//計算的程序,b從尾到頭計算冪,去掉最后一位,計算最后一位的冪,再考慮前面所有位的dfs值^10,*最后一位的冪%MOD
public int superPow(int a, int[] b) {
return dfs(a, b, b.length - 1);
}
int dfs(int a, int[] b, int u) {
if (u == -1) return 1;//u==0,自然回傳1
return (pow(dfs(a, b, u - 1), 10)%MOD * pow(a, b[u]) % MOD)%MOD;
}
int pow(int a, int b) {
int ans = 1;
a %= MOD;
while (b-- > 0) ans = ans * a % MOD;
return ans;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/374608.html
標籤:其他
上一篇:大廠程式員的發展瓶頸是什么?
