给定一个自然数 N,求数字 1+1/1!+1/2!+1/3!+...+1/N! 之和。动作的数量必须与 N 成正比。
规格 输入 给定单个数字 N
输出 需要将计算结果显示为精确到小数点后 5 位的实数。
在 9 次测试中有 1 次超过了最长运行时间。怎么修?
N = int(input())
sum = 1
f = 1
for g in range(1, N + 1):
f *= g
sum += 1 / f
print(sum)
给定一个自然数 N,求数字 1+1/1!+1/2!+1/3!+...+1/N! 之和。动作的数量必须与 N 成正比。
规格 输入 给定单个数字 N
输出 需要将计算结果显示为精确到小数点后 5 位的实数。
在 9 次测试中有 1 次超过了最长运行时间。怎么修?
N = int(input())
sum = 1
f = 1
for g in range(1, N + 1):
f *= g
sum += 1 / f
print(sum)
每次迭代两个动作就足够了。
使用
reduce
和factorial
:或在一个循环中