快速幂运算

数值的整数次方

https://www.nowcoder.com/practice/1a834e5e3e1a4b7ba251417554e07c00?tpId=13&tqId=11165&rp=1&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking&tPage=1

#include<iostream>
#include<cmath>
using namespace std;
int main(void)
{
   int m, n;
   cin>>m>>n;
   int result=1;
   while(n)
   {
       if(n%2==1) result=result*m;
       m=m*m;
       n=n/2;
   }
   cout<<result;
}

相当于不断地把幂除以2,则底数变为原来的平方;幂为偶数直接除二,幂为奇数减一再除二同时将减出来的底数的一次方也要乘上;最后是两个一次幂相乘
将n%2==1用与运算, n=n/2用位运算可以优化代码

class Solution {
public:
    double Power(double base, int exponent) {
        int n=abs(exponent);
        double result=1.0;
        while(n)
        {
            if(n&1) result=result*base;
            base=base*base;
            n>>=1;
        }
        if(exponent>0) return result;
        else return 1/result;
    }
};
全部评论

相关推荐

01-23 14:54
同济大学 Java
热爱敲代码的程序媛:给你提几点【专业技能】这个模块里面可优化的地方:1.【具备JVM调优经验】可以去b站上搜一下JVM调优的视频,估计一两个小时凭你的学习能力就能掌握JVM调优的实践方面的技能。2.【MySql优化】MySql这一栏,你去b站或者找个博客看看MySql优化,学一下,如果你本身比较熟悉MySql语句的话,那基本半天时间凭你的学习能力MySql语句优化方面的技能你也能掌握个差不多。以上1,2两点主要是因为我看你专业技能大部分都说的是偏理论,没有写应用。再就是最后,你结合你的项目,想一想你的项目中哪些sql语句是可以用MySql优化的,到时候你面试的时候也好结合着说一下。
点赞 评论 收藏
分享
2024-12-26 20:46
复旦大学 C++
国棉17厂丶小王:拿了offer的那个周末晚上去网吧通宵,去网吧不知道玩什么刷了lc的每日一题,然后试着第一次打开了三角洲行动,从此少了一个已经刷了700道题的lc用户,但是烽火地带多了一只🐭🐭
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务