本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前n项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。 输入格式: 输入在一行中给出一个正整数n。 输出格式: 在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。
时间: 2023-06-05 07:48:02 浏览: 204
\u8fd9\u662f\u4e00\u4e2a\u5176\u4ed6\u8bed\u8a00\u7684\u9898\u76ee\uff0c\u4f46\u6211\u4eec5\u4ee5\u4e2d\u6587\u56de\u7b54\u3002
\u8ba1\u7b97\u7ed3\u679c\uff1a \u524d5\u9879\u5206\u522b\u4e3a\uff1a2/1, 3/2, 5/3, 8/5, 13/8 \u7b2c5\u9879\u7684\u5206\u5b50\u4e3a13\uff0c\u5206\u6bcd\u4e3a8\uff0c\u6240\u4ee5\u7b2c6\u9879\u7684\u5206\u5b50\u5c31\u662f13+8=21\u3002
\u56de\u7b54\uff1a \u7b2cn\u9879\u7684\u5206\u5b50\u4e3aFn,分母为Dn,那么有Fn+1 = Fn + Fn-1, Dn+1 = Dn + Dn-1。 初始化:F1 = 2, F2 = 3, D1 = 1, D2 = 2。 则根据上述递推式,可以得到以下程序:
def calculate(n):
fn_1, fn_2 = 2, 3
dn_1, dn_2 = 1, 2
fn, dn = fn_1, dn_1
for i in range(3, n+1):
fn = fn_1 + fn_2
dn = dn_1 + dn_2
fn_2, fn_1 = fn_1, fn
dn_2, dn_1 = dn_1, dn
return fn + fn_1, dn + dn_1
n = int(input())
ans = calculate(n)
print("{}/{}".format(ans[0], ans[1]))
例如,输入n为5,则输出为21/8。注意,本题要求输出结果精确到小数点后两位,因此需要对结果进行四舍五入或者直接输出分数形式。
阅读全文
相关推荐

















