求平方与倒数序列的部分和
本题要求对两个正整数m和n(m≤n)编写程序,计算序列和
m
2
+
1
/
m
+
(
m
+
1
)
2
+
1
/
(
m
+
1
)
+
.
.
.
+
n
2
+
1
/
n
。
m^2+1/m+(m+1)^2+1/(m+1)+...+n^2+1/n。
m2+1/m+(m+1)2+1/(m+1)+...+n2+1/n。
输入格式:
输入在一行中给出两个正整数m和n(m≤n),其间以空格分开。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。
输入样例:
5 10
输出样例:
sum = 355.845635
思路:
将序列和分为
m
2
+
(
m
+
1
)
2
+
.
.
.
+
n
2
m^2+(m+1)^2+...+n^2
m2+(m+1)2+...+n2
和
1
/
m
+
1
/
(
m
+
1
)
+
.
.
.
+
1
/
n
1/m+1/(m+1)+...+1/n
1/m+1/(m+1)+...+1/n
两部分,然后循环求和,最后输出。
代码如下:
a,b=input().split()
a,b=eval(a),eval(b)
sum=0
for i in range(a,b+1):
sum=sum+i*i+1/i
print("sum = {:.6f}".format(sum))
改进代码:(使用列表推导式)
m, n = map(int,input().split())
print("sum = %.6f"% sum([m*m+1/m for m in range(m,n+1)]))