Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
一、前言
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,)。
题目链接:Pow(x, n)。
二、题目要求
样例 1
输入: x = 2.00000, n = 10
输出: 1024.00000
复制代码
样例 2
输入: x = 2.10000, n = 3
输出: 9.26100
复制代码
考察
1.位运算中等题型、快速幂
2.建议用时15~30min
复制代码
三、问题分析
本题是位运算的第17题,没了解过位运算相关知识点可以看这一篇文章,讲解比较详细:
如果你了解过位运算相关知识点,但没有了解过快速幂,可以先看这一篇
知识点介绍,然后再回来做这一题会发现非常简单。
这一题其实套用位运算的模板就行了,最主要的是n的范围 -23^1 <= n <= 2^31-1,这不正好是int整形存储二进制的范围吗?
这里要注意一点,因为n有可能小于0,对于这种情况我们还是按照正数判断,最后取倒数就行了。
最后提交测试的时候,发现了几个恶心的测试用例怎么也过不了


最后我修改了题目给定的n,从int 改成long然后就莫名其妙的过了。

四、编码实现
class Solution {
public:
double myPow(double x, long n) {
int flag=1;//判断n负数的标记
double base=x,ans=1;//初始化
if(n<0)
{
flag=0;
n=abs(n);//取正数
}
while(n)//快速幂模板
{
if(n&1)
ans=ans*base;
base*=base;
n=n>>1;
}
if(flag)//正数输出结果
return ans;
else//取倒数输出
return 1.0*1/ans;
}
};
复制代码
五、测试结果

六、总结与提高
这一题是位运算分支的第17题,是快速幂的第2题。快速幂掌握其实不难,在网上找了半天,发现2个典型的快速幂运算,这两题做完快速幂也能基本掌握了。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END





















![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)