class Solution { //数学模幂运算公式 a * b % k = (a % k) * (b % k) % k;
public:
int base = 1337;
int superPow(int a, vector<int>& b) {
if(b.empty()) return 1;
int back = b.back();
b.pop_back();
a = a % base;
return addPow(a, back) * addPow(superPow(a, b), 10) % base;
}
int addPow(int a, int b) {
int res = 1;
for(int i = 0; i < b; ++i) res = (res * a) % base;// 错误点 这里一定要加上对base求mod,这里没加而加在最后return res % base的话 这里可以越int最大值导致结果出错 
return res;
}
};

posted on 2018-01-21 19:06  bloomingFlower  阅读(127)  评论(0编辑  收藏  举报