返回

蓝桥杯备战日志(Python)7-求和(前缀和)

发布时间:2023-02-10 17:30:03 283
# python# 数据

原题

给定 n 个整数  ,求它们两两相乘再相加的和,即:

蓝桥杯备战日志(Python)7-求和(前缀和)_数学规律_04

评测用例规模与约定:

对于  的数据, 。

对于所有评测用例,  。

 

分析

这种类型的题一般有较明显的数学规律,一种求稳的解题思路是,通过列出前几种数字较小的情况并总结出规律。

蓝桥杯备战日志(Python)7-求和(前缀和)_数学规律_08

不难发现,给定n个整数 蓝桥杯备战日志(Python)7-求和(前缀和)_数学规律_02S = a1*(a1的后面n-1项的和)  +  a2*(a2的后面n-2项的和) + an-1*an可以使用给定数列的前缀和求解,即计算出给定长度为n的数列的S1, S2, S3, ......, Sn, (Si为数列前i项和) 。

蓝桥杯备战日志(Python)7-求和(前缀和)_Python_10

 

源码

n = int(input())
# An存放数列,索引从0开始;Sn存放前i项和,索引从1开始
An = list( map(int,input().split()) )

Sn = [0] * (n+1)
for i in range(n):
Sn[i+1] = An[i] + Sn[i]

res = 0
for i in range(n):
res += An[i] * (Sn[n]-Sn[i+1])

print(res)

 

上一篇:​​蓝桥杯备战日志(Python)6-整数分解&数的分解(有“条件”的枚举)​​

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
minio桶自动挂载 2023-02-10 17:27:48