【寒假每日一题】AcWing 4644. 求和(补)

简介: 目录一、题目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 <iostream>

using namespace std;

long long a[200010];

long long s[200010];

int main()

{   long long n;

   cin>>n;

   for(int i=0;i<n;i++){

    cin>>a[i];

}

long long sum=0;

s[0]=a[0];

for(int i=1;i<n;i++){

 s[i]=s[i-1]+a[i];

}

for(int i=0;i<n;i++){

 sum+=a[i]*(s[n-1]-s[i]);

}

cout<<sum;

return 0;

}

目录
相关文章
|
编解码 JavaScript 数据可视化
Cesium中Viewer配置对照表
本文用于Cesium初始化界面的详细配置,是对这篇文章的延伸;内容不定时更新。
510 0
|
12月前
|
Python
Python办公自动化:提取pdf文件中的图片
Python办公自动化:提取pdf文件中的图片
218 0
|
9月前
|
前端开发 JavaScript 开发者
React 分割线组件 Divider
在现代前端开发中,React 是最流行的 JavaScript 库之一,用于构建可维护的用户界面。本文介绍如何在 React 中使用分割线组件,从基础到高级逐步讲解。基础概念涵盖分割线的作用及其在 React 中的实现方式,包括使用 HTML 标签、第三方库(如 Material-UI 和 Ant Design)及自定义组件。常见问题及解决方案部分讨论了样式不一致、间距不当和响应式设计等问题,并提供了解决方案。高级用法则介绍了自定义分割线组件和动态生成分割线的方法。希望本文能帮助你在实际项目中更好地使用分割线组件。
333 71
|
10月前
|
安全 算法 网络协议
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字时代,网络安全和信息安全已经成为了我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,帮助读者更好地了解网络安全的重要性和应对措施。通过阅读本文,您将了解到网络安全的基本概念、常见的网络安全漏洞、加密技术的原理和应用以及如何提高个人和组织的网络安全意识。
|
弹性计算 运维 云计算
云服务器 ECS产品使用问题之幻兽帕鲁服务器在游戏和计算巢远程都无法连接,该怎么办
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
如何查看你的公网ip?
在公司你的终端一般会给你分配一个内网ip,然后经过NAT,因为不可能办公室里面的 IP 也是公网可见的,公网地址实在是太贵了,所以一般就是整个办公室共用一个到两个出口 IP 地址。
801 0
Java 实现 Elasticsearch 查询全部数据
【7月更文挑战第7天】Java 实现 Elasticsearch 查询全部数据
|
Oracle 关系型数据库 MySQL
flink cdc 转换问题之类型转换如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
|
Linux C++ iOS开发
VLC源码解析:视频播放速度控制背后的技术
VLC源码解析:视频播放速度控制背后的技术
1058 0
|
存储 安全 算法
量子计算的发展
量子计算的发展
183 0