Leetcode 372. Super Pow

2017-05-03  本文已影响0人  刘宇轩Freeman

题目描述:

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.

One knowledge: ab % k = (a%k)(b%k)%k

const int base = 1337;
int powerMod(int a,int b){
    a %= base;
    int result = 1;
    for(int i = 0;i < b;i++){
        result = (result * a) % base;
    }
    return result;
}

int superPow(int a, vector<int>& b) {
    if(b.empty()){
        return 1;
    }
    int lastDigit = b.back();
    b.pop_back();
    return powerMod(superPow(a,b),10) * powerMod(a,lastDigit) % base;   
}
上一篇下一篇

猜你喜欢

热点阅读