【蓝桥杯】2080求和

【蓝桥杯】2080求和_第1张图片

思路

直接算想都不想一定超时,从公式入手,找规律化简
S = a 1 ( a 2 + a 3 + . . . + a n ) + a 2 ( a 3 + . . . + a n ) + . . . + a n − 1 a n S = a_1(a_2+a_3+...+a_n) + a_2(a3+...+a_n)+...+a_{n-1}a_n S=a1(a2+a3+...+an)+a2(a3+...+an)+...+an1an
多次用到了求和,前缀和,完美。

n = int(input())
a = [0] + list(map(int,input().split()))

pre = [0 for i in range(n+1)]
for i in range(1,n+1):
  pre[i] = pre[i-1] + a[i]

ans  = 0
for i in range(1,n-1 + 1):
  ans += a[i]*(pre[-1] - pre[i])

print(ans)

总结

重点是不要被公式吓到,也别直接暴力,如果暴力那这题一点算法都没有,总得考你点什么吧。

你可能感兴趣的:(蓝桥杯,蓝桥杯,职场和发展,前缀和)