P8772 [蓝桥杯 2022 省 A] 求和 新解法(非前缀和)
_NightFire666_ · · 题解
看到大佬们的前缀和代码,本蒟蒻自愧不如 qwq。
本题也可以用 完全平方公式!!!
推荐使用 博客 食用!
咳咳,先从一个简单的例子入手:
在
1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 这些正整数中每两个数相乘的乘积之和是多少?
我们都知道这十个数两两相乘的乘积有
为这十个数两两相乘的乘积之和。
- 为什么?
先看一下下面的算式:
由完全平方公式展开后为:
不难发现多项式
易得:
那么本题的公式就是:
最后送上代码!
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,x,mul=0,sum=0;
//mul:和的平方
//sum:平方的和
signed main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>x;
sum+=(x*x);
mul+=x;
}
cout<<(mul*mul-sum)/2;
return 0;
}