题解 | #数值的整数次方#

数值的整数次方

http://www.nowcoder.com/practice/1a834e5e3e1a4b7ba251417554e07c00

  • 题目描述
    给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

保证base和exponent不同时为0。不得使用库函数,同时不需要考虑大数问题,也不用考虑小数点后面0的位数。

  • 思路
    一个数末尾为0时,右移一位相当于除以2,
    一个数末尾为1时,右移一位相当于-1,再除以2
    所以,当exponent&1=1时,需要将resbase,再令exponent右移1位,exponent右移1位的本质是base^exponent = base^(2exponent/2) = (base^2)^(exponent/2),因此,base=base^2。
  • 算法流程
    假设 base=3,exponent= 5。那么 5 的二进制是:101
  1. 结果值 result 初始为 1
  2. base 初始为 3,此时 exponent 的二进制最右位为 1,更新结果为:base * result
  3. exponent 右移一位。base 进行累乘,base 更新为 3 的 2 次方。由于 exponent 的二进制最右位为 0,不更新结果
  4. exponent 右移一位。base 进行累乘,base 更新为 3 的 4 次方。此时 exponent 的二进制最右位为 1,更新结果为:base * result,再右移,exponent则为0,程序结束
全部评论

相关推荐

10-30 19:23
已编辑
山东大学(威海) C++
牛至超人:我了个雷 1.实习经历写太长了吧,精简一点,你写那么老多,面试官看着都烦 2.项目经历你放俩竞赛干啥单独拿出来写上几等奖就行了呗 3.一大雷点就是项目经历里的那个课程设计,大家都知道课程设计巨水,不要写课程设计,换一个名字,就叫学生管理系统,面试官问就说是自己做的项目,不要提课程设计的事 4.那个交流经历,简化一下塞到最上面的教育经历里就行了 5.简历尽量一页纸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务