P8772 [蓝桥杯 2022 省 A] 求和 题解

发布时间 2023-08-22 21:56:17作者: Thenyu

蒟蒻第一次发题解qwq

$$ S=a_1 \times a_2+a_1 \times a_3+a1 \times a_n+a_2 \times a_3+···+a_n-2 \times a_n-1+a_n-1 \times a_n $$

从样例来看

4

1 3 6 9

这道题就是要求

$$ 1\times3+1\times6+1\times9+3\times6+3\times9+6\times9 $$

我们可以把这个算式分成几个部分

$$(1 \times 3)+(1 \times 6+3 \times 6)+(1 \times 9+3 \times 9+6 \times 9)$$

然后用我们小学就学过的乘法分配律
$$a \times c+b \times c=(a+b)c$$

把算式变成这样

$$ 1 \times 3+(1+3) \times 6+(1+3+6) \times 9 $$

就可以发现这道题其实就是求前面所有的数的和 $\times$ 这个位置上的数了

AC代码

#include<bits/stdc++.h>
using namespace std;
int n,a;
long long tmp,ans;
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%d",&a),ans+=a*tmp,tmp+=a;//tmp求前面所有的数的和,ans累加答案
	printf("%lld",ans);
	return 0;
}