本题题意很好理解,也能够立马动手,就这样:
n = int(input())
lst = list(map(float,input().split()))
num = 0
for i in range(n):
num += lst[i]*(i+1)*(n-i)
print('%.2f'%(num))
但是提交的时候大概都会出现一个错误:
因为大家会习惯性的直接使用float,而浮点型计算其实是不准确的
所以在这里应该使用decimal类型,附上代码:
from decimal import Decimal
n = int(input())
# 将浮点数都转换为Decimal类型,防止float计算结果不够精确的问题
a = list(map(Decimal, input().split(' ')))
result = Decimal(0)
# a[i]在所有的片段中出现了(i+1)*(n-i)次
for i in range(n):
result = result + a[i] * (i + 1) * (n - i)
# 使用quantize取小数点后两位并按格式输出
print(result.quantize(Decimal('0.00')))
提交结果: