[蓝桥杯 2020 省 A1] 超级胶水 题解

题目传送门

题目大意

\(n\) 个石子,两颗石子的重量之和就是并成的一颗新石子的重量,合并两个石子需要的胶水等于两颗石子重量的乘积。

解题思路

如果一个石子的重量为 \(i\),另一个石子的重量为 \(j\),那么两个石子粘在一起所用的胶水就是 \(i\times j\);合并后石子的重量就是 \(i+j\)

所以可以先将 \(sum\) 赋为第一个石子的重量,之后从 \(2\sim n\) 模拟粘石子的过程:

  • \(sum\) 每次乘上第 \(i\) 颗石子的重量,也就是胶水的数量。

  • 再将 \(sum\) 每次加上第 \(i\) 颗石子的重量,也就是合并后的石子重量。

\(sum=\sum\limits_{i=2}^nw_i,ans=\sum\limits_{i=2}^nw_i\times sum\)

最后输出胶水的数量即可。

代码

AC 记录

#include<bits/stdc++.h>
#define ri register int
#define ll long long
using namespace std;
ll n,w[100005],sum,ans=0;
int main() {
	cin>>n;
	for(ri i=1;i<=n;i++)
		cin>>w[i];
	int sum=w[1];
	for(ri i=2;i<=n;i++){
		ans+=sum*w[i];
		sum+=w[i];
	}
	cout<<ans;
	return 0;
}
posted @ 2023-02-25 08:22  Ggsddu_zzy  阅读(42)  评论(0编辑  收藏  举报