【寒假每日一题】AcWing 4644. 求和(补)
创始人
2024-05-07 20:14:57

目录

一、题目

1、原题链接

2、题目描述

二、解题报告

1、思路分析

2、时间复杂度

3、代码详解 


一、题目

1、原题链接

4644. 求和 - AcWing题库

2、题目描述

给定 n个整数 a1,a2,⋅⋅⋅,an,求它们两两相乘再相加的和,即

S=a1⋅a2+a1⋅a3+⋅⋅⋅+a1⋅an+a2⋅a3+⋅⋅⋅+an−2⋅an−1+an−2⋅an+an−1⋅an

输入格式

输入的第一行包含一个整数 n。

第二行包含 n个整数 a1,a2,⋅⋅⋅,an。

输出格式

输出一个整数 S,表示所求的和。

请使用合适的数据类型进行运算。

数据范围

对于 30% 的数据,1≤n≤1000,1≤ai≤100。
对于所有评测用例,1≤n≤200000,1≤ai≤1000。

输入样例:

4
1 3 6 9

输出样例:

117

二、解题报告

1、思路分析

1)直接枚举,暴力求解时间复杂度为O(n^2),最坏情况要循环10^10左右,所以必定超时,无法暴力。

2)通过对式子简单分析可知,总和为第i项(i=1,2,3,....,n-1)乘(前n项前缀和-前i项前缀和),然后再求和,就可得到总和。

3)优化后的算法的时间复杂度为O(n)。

4)利用上述推导直接模拟即可。

其他思路:

思路来源:y总,今年有瓜分1万AC币的活动吗?每日一题_哔哩哔哩_bilibili

y总yyds

利用公式 ((a1+a2+...+an)^2-(a1^2+a2^2+...+an^2))/2 直接求解

2、时间复杂度

时间复杂度O(n)

3、代码详解 

#include 
using namespace std;
long long a[200010];
long long s[200010];
int main()
{   long long n;cin>>n;for(int i=0;i>a[i];}long long sum=0;s[0]=a[0];for(int i=1;i

相关内容

热门资讯

脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...