Leetcode第50题(Pow(x,n))

简介: 这篇文章介绍了如何使用快速幂算法解决LeetCode第50题,即实现函数pow(x, n)来计算x的n次幂,并提供了C++的代码实现。

题目描述:

实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn )。

示例 1:
输入:x = 2.00000, n = 10
输出:1024.00000
示例 2:
输入:x = 2.10000, n = 3
输出:9.26100
示例 3:
输入:x = 2.00000, n = -2
输出:0.25000
解释:2-2 = 1/22 = 1/4 = 0.25

直接使用快速幂的思想, 例: Pow(3,13), 转换为3^1101来进行计算

3^13 因此可以拆分成3 ^ 8 * 3 ^ 4 * 3 ^ 0 * 3 ^ 1

x = 3 N & 1 = 1 ans = 3.0 x = x    N >> 1
x = 9 N & 1 = 0 ans = 3.0 x = x  N >> 1
x = 81 N & 1 = 1 ans = 243.0 x = x  N >> 1
x = 6561 N & 1 = 1 ans =1594323.0 x = x  N >> 1
class Solution {
public:
    double myPow(double x, int n) {
        //使用long long防止越界
        long long N = n;
        //定义结果变量
        double ans = 1.0;
        //负数次幂, 转为正数
        if(n < 0) N = -N;
        //计算结果
        while(N){
            if(N & 1) ans*=x;
            x *= x;
            N >>= 1;
        }
        return n < 0 ? 1/ans : ans;
    }
};
相关文章
|
2月前
|
算法 Java
LeetCode第50题Pow(x, n)
LeetCode第50题"Pow(x, n)"的解题方法,运用分而治之的策略,通过快速幂算法高效计算幂函数的结果。
LeetCode第50题Pow(x, n)
|
2月前
|
Python
【Leetcode刷题Python】50. Pow(x, n)
本文介绍了LeetCode第50题"Pow(x, n)"的解法,题目要求实现计算x的n次幂的函数,文章提供了递归分治法的详细解析和Python实现代码。
18 1
|
11月前
|
Java
Leetcode 372. Super Pow
真正的解法其实思路很简单,我随便举个例子就很容易理解了,假设要求(123^4567)%1337,只需要把这个幂式子分解成几个层次,然后把球模加到每一层中间就很容易计算出来了。
37 0
|
算法 安全 Swift
LeetCode - #50 Pow(x, n)
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
|
算法 API
leetcode:50.Pow(x, n)
实现 pow(x, n),即计算 x 的 n 次幂函数。
45 0
LeetCode 372. Super Pow
你的任务是计算 ab 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。
70 0
LeetCode 372. Super Pow
LeetCode 50. Pow(x, n)
实现pow(x,n),即计算x的n次方
82 0
LeetCode 50. Pow(x, n)
|
存储 机器学习/深度学习 算法
LeetCode 49字母异位词分组&50pow(x,n)&51八皇后
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
126 0
LeetCode 49字母异位词分组&50pow(x,n)&51八皇后
|
算法 Java Python
ACM 选手图解 LeetCode Pow(x,n)
ACM 选手图解 LeetCode Pow(x,n)
ACM 选手图解 LeetCode Pow(x,n)