LeetCode 372 超级次方[快速幂 递归] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 372 超级次方[快速幂 递归] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。


解题思路:
该题采用了快速幂的方法,通过不断调用快速幂,从数组的后面(个位)开始,不断对中间值相乘,每遍历过一个位数,就要让a翻上10倍,这样就避免修改快速幂函数的麻烦,代码如下:

class Solution 
public:
    const int MOD = 1337;
    int quickPow(int a, int n) 
        if(n == 0) 
            return 1;
        
        int b = quickPow(a, n / 2);
        return n % 2 == 0 ? (long)b * b % MOD : (long)b * b * a % MOD;
    

    int superPow(int a, vector<int>& b) 
        int ans = 1;
        for(int i = b.size() - 1; i >= 0; i --) 
            ans = (long)ans * quickPow(a, b[i]) % MOD;
            a = quickPow(a, 10);
        
        return ans;
    
;

以上是关于LeetCode 372 超级次方[快速幂 递归] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

372. 超级次方快速幂

372. 超级次方快速幂

372. 超级次方快速幂

372. 超级次方

leetcode372——超级次方

leetcode372——超级次方