真的会有人这样写算法题吗
算法
从 $a_n$ 开始提取因式,我们发现结果其实就是 $\sum_{i=1}^n{a_i\cdot\sum_{j=0}^{i-1}a_j}$
所以使用前缀和即可
但是,我偏偏懒得自己写,所以……
C++ 代码
#include <bits/stdc++.h>
using namespace std;
using LL = long long;
const int N = 2e5 + 10;
int n, x;
LL sum, a[N], b[N];
int main()
{
scanf("%d", &n);
for(int i = 0; i < n; i ++) scanf("%lld", a + i);
partial_sum(a, a + n, b);
printf("%lld\n", accumulate(a + 1, a + n, 0LL, [](LL s, LL a){
return move(s) + a * b[++x - 1];
}));
}
或者连内积都懒得自己写
C++ 代码
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n;
long long sum, a[N], b[N];
int main()
{
scanf("%d", &n);
for(int i = 0; i < n; i ++) scanf("%lld", a + i);
partial_sum(a, a + n, b);
printf("%lld\n", inner_product(a + 1, a + n, b, 0LL));
}
这码风好 modern