鱼C论坛

 找回密码
 立即注册
查看: 2877|回复: 53

[已解决]Python:每日一题 390

[复制链接]
回帖奖励 8 鱼币 回复本帖可获得 1 鱼币奖励! 每人限 1 次(中奖概率 40%)
发表于 2020-5-11 18:53:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 永恒的蓝色梦想 于 2020-5-11 21:52 编辑

今天的题目:


实现 pow(x, n) ,即计算 x 的 n 次幂函数。
示例 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
说明:

  • -100.0 < x < 100.0
  • n 是 32 位有符号整数,其数值范围是 [-231, 231-1] 。

欢迎大家一起答题!
最佳答案
2020-5-11 20:14:16
本帖最后由 kinkon 于 2020-5-11 20:36 编辑

昨天才做过,凑个热闹
  1. class Solution:
  2.     def myPow(self, x: float, n: int) -> float:
  3.         if x == 0.0: return 0.0
  4.         res = 1
  5.         if n < 0: x, n = 1 / x, -n
  6.         while n:
  7.             if n & 1: res *= x
  8.             x *= x
  9.             n >>= 1
  10.         return res
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 贡献 +3 收起 理由
zltzlt + 3 + 3 + 3

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-11 20:14:16 | 显示全部楼层    本楼为最佳答案   
本帖最后由 kinkon 于 2020-5-11 20:36 编辑

昨天才做过,凑个热闹
  1. class Solution:
  2.     def myPow(self, x: float, n: int) -> float:
  3.         if x == 0.0: return 0.0
  4.         res = 1
  5.         if n < 0: x, n = 1 / x, -n
  6.         while n:
  7.             if n & 1: res *= x
  8.             x *= x
  9.             n >>= 1
  10.         return res
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-5-11 18:57:20 | 显示全部楼层
今天我来出题
因为 zltzlt 懒 (滑稽)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 19:29:09 | 显示全部楼层
本帖最后由 zltzlt 于 2020-5-11 19:30 编辑


感觉回答的人好少.....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-11 19:30:53 | 显示全部楼层
qiuyouzhi 发表于 2020-5-11 19:29
感觉回答的人好少.....

是的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 19:44:23 | 显示全部楼层

回帖奖励 +1 鱼币

def power(x,n):
    result=1
    for unit in range(n):
        result *= x
    return result
def main():
    x=eval(input('输入x:'))
    n=eval(input('输入n:'))
    print(power(x,n))
main()

评分

参与人数 1荣誉 +1 收起 理由
zltzlt + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 19:48:22 | 显示全部楼层
本帖最后由 赚小钱 于 2020-5-11 19:49 编辑
  1. In [12]: def pow_pos(x, n):
  2.     ...:     if n == 0:
  3.     ...:         return 1;
  4.     ...:     if n == 1:
  5.     ...:         return x;
  6.     ...:     return x * pow(x, n - 1);
  7.     ...:

  8. In [13]: def pow_neg(x, n):
  9.     ...:     if n == 0:
  10.     ...:         return 1;
  11.     ...:     if n == 1:
  12.     ...:         return x;
  13.     ...:     return pow(x, n + 1) / x;
  14.     ...:

  15. In [14]: def pow(x, n):
  16.     ...:     if n > 0:
  17.     ...:         return pow_pos(x, n);
  18.     ...:     return pow_neg(x, n);
  19.     ...:

  20. In [15]: a = pow(2.1, 3)

  21. In [16]: a
  22. Out[16]: 9.261000000000001

  23. In [17]: a = pow(2, -2);

  24. In [18]: a
  25. Out[18]: 0.25
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-11 19:48:32 | 显示全部楼层

没有考虑 n 为负数的情况
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 19:51:12 | 显示全部楼层
占+1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-11 20:02:45 | 显示全部楼层
本帖最后由 塔利班 于 2020-5-11 20:05 编辑
  1. def pow(x,n):
  2.     def f(x,n):
  3.         if n<0:
  4.             return 1/f(x,-n)
  5.         elif n==0:
  6.             return 1
  7.         elif n==1:
  8.             return x
  9.         else:
  10.             t=f(x,n//2)
  11.             return t*t*f(x,n&1)
  12.     print('%.5f'%f(x,n))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-11 20:06:46 | 显示全部楼层

x=2.00000,n=-2147483648 时 Overflow
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 20:08:47 | 显示全部楼层
本帖最后由 Twilight6 于 2020-5-11 21:13 编辑

久违的每日一题

  1. def pow(x, n):
  2.     result = 1
  3.     while n > 0:
  4.         n -= 1
  5.         result *= x
  6.     while n < 0:
  7.         n += 1
  8.         result /= x
  9.     return result
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-11 20:09:05 | 显示全部楼层

x=1.00001,n=123456 递归次数过大
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-11 20:10:20 | 显示全部楼层

x=2.00000,n=-2 解答错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 20:12:34 | 显示全部楼层

回帖奖励 +1 鱼币

永恒的蓝色梦想 发表于 2020-5-11 20:09
x=1.00001,n=123456 递归次数过大

是的,我发现了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-11 20:15:55 | 显示全部楼层
kinkon 发表于 2020-5-11 20:14
昨天才做过,凑个热闹

过了,但是你的代码没有 return res
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 20:18:29 | 显示全部楼层
  1. def pow(x, n):
  2.     return "%.5f" % x**n
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-11 20:19:39 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 20:28:42 | 显示全部楼层
快速幂我不会
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 20:31:33 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 18:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表