本题题意很好理解,也能够立马动手,就这样:

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))

但是提交的时候大概都会出现一个错误:

用python来解PAT乙级1049数列的片段和 -20-满分无错误

因为大家会习惯性的直接使用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')))

提交结果:

用python来解PAT乙级1049数列的片段和 -20-满分无错误

相关文章:

  • 2021-06-17
  • 2021-04-14
  • 2022-01-11
  • 2021-08-04
  • 2021-07-16
  • 2021-08-14
  • 2022-12-23
猜你喜欢
  • 2022-02-25
  • 2022-12-23
  • 2021-12-01
  • 2021-05-20
  • 2021-09-24
  • 2021-08-17
  • 2022-01-15
相关资源
相似解决方案