当前位置: 首页 > news >正文

【LeetCode】50. Pow(x, n)

1 问题

实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即, 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

2 答案

自己写的超出时间限制

class Solution:def myPow(self, x: float, n: int) -> float:if n == 0:return 1res = 1for _ in range(abs(n)):res *= xreturn res if n > 0 else 1/res

官方解,利用二进制转十进制

class Solution:def myPow(self, x: float, n: int) -> float:if x == 0.0: return 0.0res = 1if n < 0:x, n = 1/x, -nwhile n:if n & 1:  # 按位与,即 n % 2 == 1res *= xx *= x  n >>= 1  # 即 n % 2 == 1return res 

对于任何十进制正整数 n n n,设其二进制为 b m . . . b 3 b 2 b 1 b^m...b^3b^2b^1 bm...b3b2b1 b i b^i bi为二进制某位值, i ∈ [ 1 , m ] i \in [1,m] i[1,m]),则有:

  • 二进制转十进制: n = 1 b 1 + 2 b 2 + 4 b 3 + … + 2 m − 1 b m n=1 b_1+2 b_2+4 b_3+\ldots+2^{m-1} b_m n=1b1+2b2+4b3++2m1bm (即二进制转十进制公式)
  • 幂的二进制展开: x n = x 1 b 1 + 2 b 2 + 4 b 3 + … + 2 m − 1 b m = x 1 b 1 x 2 b 2 x 4 b 3 … x 2 m − 1 b m x^n=x^{1 b_1+2 b_2+4 b_3+\ldots+2^{m-1} b_m}=x^{1 b_1} x^{2 b_2} x^{4 b_3} \ldots x^{2^{m-1} b_m} xn=x1b1+2b2+4b3++2m1bm=x1b1x2b2x4b3x2m1bm
http://www.lryc.cn/news/199136.html

相关文章:

  • vue2技能树(2)-模板语法、vue的工具链、渐进式框架
  • 【Git系列教程-目录大纲】
  • 【高等数学】导数与微分
  • springboot之quartz动态可控定时任务
  • 什么是CSS的外边距重叠?
  • 设计模式之抽象工厂模式
  • Compose预处理组件大比拼:性能、应用场景和可视化对比总结
  • 【小米】Linux 实习生
  • python一点通:coroutine (协程)是什么和重要知识点?
  • QCC51XX-QCC30XX系列开发教程(实战篇) 之 12.1-空间音频相关模块的概述
  • Servlet的生命周期
  • 2.4 如何在FlinkSQL使用DataGen(数据生成器)
  • Gin + Ant Design Pro JWT认证
  • canvas实现图片标注,绘制区域
  • SELECT COUNT(*) 会造成全表扫描吗?
  • python考前复习(90题)
  • 根据SpringBoot Guides完成进行示例学习(详细步骤)
  • waf、yakit和ssh免密登录
  • 【AIGC核心技术剖析】大型语言和视觉助手——LLaVA(论文+源码)
  • IBM的WAS简介与基本使用手册
  • Deno 快速入门
  • 【计算机网络笔记】OSI参考模型基本概念
  • ConnectTimeout和ReadTimeout所代表的意义
  • 使用Python计算平面多边形间最短距离,数据需要从excel表格中导入
  • 华为数通方向HCIP-DataCom H12-831题库(多选题:1-20)
  • CCC数字钥匙设计【NFC】--通过NFC进行车主配对Phase3
  • 开源OA协同办公系统,集成Flowable流程引擎 可拖拽创建个性表单
  • 为什么嵌入通常优于TF-IDF:探索NLP的力量
  • oracle-AWR报告生成方法
  • 笙默考试管理系统-MyExamTest----codemirror(37)