Python:每日一题 390
本帖最后由 永恒的蓝色梦想 于 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] 。
{:10_298:}欢迎大家一起答题!{:10_298:} 本帖最后由 kinkon 于 2020-5-11 20:36 编辑
昨天才做过,凑个热闹
class Solution:
def myPow(self, x: float, n: int) -> float:
if x == 0.0: return 0.0
res = 1
if n < 0: x, n = 1 / x, -n
while n:
if n & 1: res *= x
x *= x
n >>= 1
return res 今天我来出题{:10_256:}
因为 zltzlt 懒 (滑稽) 本帖最后由 zltzlt 于 2020-5-11 19:30 编辑
永恒的蓝色梦想 发表于 2020-5-11 18:57
今天我来出题
感觉回答的人好少..... qiuyouzhi 发表于 2020-5-11 19:29
感觉回答的人好少.....
是的 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()
本帖最后由 赚小钱 于 2020-5-11 19:49 编辑
In : def pow_pos(x, n):
...: if n == 0:
...: return 1;
...: if n == 1:
...: return x;
...: return x * pow(x, n - 1);
...:
In : def pow_neg(x, n):
...: if n == 0:
...: return 1;
...: if n == 1:
...: return x;
...: return pow(x, n + 1) / x;
...:
In : def pow(x, n):
...: if n > 0:
...: return pow_pos(x, n);
...: return pow_neg(x, n);
...:
In : a = pow(2.1, 3)
In : a
Out: 9.261000000000001
In : a = pow(2, -2);
In : a
Out: 0.25 扼婉星 发表于 2020-5-11 19:44
没有考虑 n 为负数的情况 占+1 本帖最后由 塔利班 于 2020-5-11 20:05 编辑
def pow(x,n):
def f(x,n):
if n<0:
return 1/f(x,-n)
elif n==0:
return 1
elif n==1:
return x
else:
t=f(x,n//2)
return t*t*f(x,n&1)
print('%.5f'%f(x,n)) 塔利班 发表于 2020-5-11 20:02
x=2.00000,n=-2147483648 时 Overflow 本帖最后由 Twilight6 于 2020-5-11 21:13 编辑
久违的每日一题
def pow(x, n):
result = 1
while n > 0:
n -= 1
result *= x
while n < 0:
n += 1
result /= x
return result 赚小钱 发表于 2020-5-11 19:48
x=1.00001,n=123456 递归次数过大 扼婉星 发表于 2020-5-11 19:44
x=2.00000,n=-2 解答错误 永恒的蓝色梦想 发表于 2020-5-11 20:09
x=1.00001,n=123456 递归次数过大
是的,我发现了。。。 kinkon 发表于 2020-5-11 20:14
昨天才做过,凑个热闹
过了,但是你的代码没有 return res def pow(x, n):
return "%.5f" % x**n ouyunfu 发表于 2020-5-11 20:18
作弊! 快速幂我不会{:10_266:}
{:9_220:} 永恒的蓝色梦想 发表于 2020-5-11 20:19
作弊!
难道不能用**