参加我之前的一篇文章:【数论基础】判断素数、埃拉托色尼筛选法、欧几里得算法、反复平方法https://blog.csdn.net/qq_41895747/article/details/104379060
题目:
class Solution {
public:
double myPow(double x, int n) {
double res = 1;
int m = abs(n);
while(m>0){
if(m%2)
res*=x;
x*=x;
m/=2;
}
return n>0?res:1/res;
// return pow(x,n);
}
};
其实已经完成了快速幂的思想,但在OJ中有一个超大的负数测试点卡住,服了
换一下就可以:
class Solution {
public:
double myPow(double x, int n) {
double res = 1.0;
for(int i = n; i != 0; i /= 2){
if(i % 2 != 0){
res *= x;
}
x *= x;
}
return n < 0 ? 1 / res : res;
}
};
抖个机灵,直接写一句return pow(x,n);也能把这题A了哈哈
沉迷单车的追风少年 发布了323 篇原创文章 · 获赞 315 · 访问量 14万+ 私信 关注