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

· · 题解

1.题目传送门:

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

2.思路:

一个石子的重量为 i,另一个石子重量为 j,那么合并这两个石子所需的胶水为 i \times j,合并后的石子为 i + j。我们可以定义一个 sum 存储第一个石子的重量,然后每次循环都让 sum 乘上第 i 个石子的重量,得到了胶水的重量,再让 sum 加上第 i 个石子的重量。

3.代码实现:

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 50;
int a[N];
int main (){
    int n;
    cin >> n;
    for(int i = 1 ; i <= n ; i++){
        cin >> a[i];
    }
    long long he = 0 , sum = a[1]; //he用来存储胶水的重量 
    for(int i = 2 ; i <= n ; i++){
        he += sum * a[i];
        sum += a[i];  
    }
    cout << he;
    return 0;
}

AC记录
如果觉得这篇代码对你有帮助,请点个赞再走谢谢。