玩命加载中 . . .

372-超级次方


LeetCode 372. 超级次方

你的任务是计算 $a^b$ 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。

示例 1:

输入:a = 2, b = [1,0]
输出:1024

method: 快速幂

const int mod = 1337;
int pow(int a, int b) { // 快速幂
    a %= mod;
    int t = 1;
    while (b) {
        if (b & 1) t = t * a % mod;
        a = a * a % mod;
        b >>= 1;
    }
    return t;
}
int superPow(int a, vector<int>& b) {
    if (b.size() == 0) return 1;
    int x = b.back();
    b.pop_back();
    return pow(superPow(a, b), 10) * pow(a, x) % mod;   // 前部分还要加个10次方
}

文章作者: kunpeng
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kunpeng !
  目录