1.50. Pow(x, n)
Implement pow(x, n).
注意要考虑n为负数的情况。
class Solution {
public:
double myPow(double x, int n) {
double res = 1;
unsigned int newn = n;
if (n < 0) {
x = 1 / x;
newn = -n;
}
while (newn){
if (newn & 1){
res *= x;
}
x *= x;
newn >>= 1;
}
return res;
}
};
2.372. Super Pow
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.
Example1:
a = 2 b = [3] Result: 8
Example2:
a = 2 b = [1,0] Result: 1024
Credits:
Special thanks to @Stomach_ache for adding this problem and creating all test cases.
b=[1,0]--->1*10+0
class Solution {
public:
int superPow(int a, vector<int>& b) {
int res = 1;
for (int i = b.size()-1; i >=0; i--){
res = (res*powMod(a, b[i])) % base;
a = (powMod(a, 10)) % base;//
}
return res;
}
private:
int powMod(int a, int b){
a %= base;//
int res = 1;
while (b){
if (b & 1){
res = (res*a)%base;
}
b >>= 1;
a = (a*a) % base;
}
return res;
}
const int base = 1337;
};