题目
分析
就很简单,按题目逻辑每个数与其他数相乘乘积之和。
代码
第一次失败代码
#include <iostream>
using namespace std;
long long n,sum;
long long ans;
int a[200010];
int main()
{
cin >> n;
for(long long i = 1; i <= n; i++)
{
cin >> a[i];
for(long long j = 1; j < i; j++)
{
ans += a[i] * a[j];
}
}
cout << ans;
// 请在此输入您的代码
return 0;
}
这个代码系统显示四个案例超时。
第二次改进代码
#include <iostream>
using namespace std;
long long n,sum;
long long ans;
int a[200010];
int main()
{
cin >> n;
for(long long i = 1; i <= n; i++)
{
cin >> a[i];
sum += a[i];
}
for(long long i = 1; i <= n; i++)
{
ans += a[i] * (sum -a[i]); //得到每个数与其他数之和相乘乘积之和 是答案的两倍
}
cout << ans/2; //记得除以2
// 请在此输入您的代码
return 0;
}
小结
简单题也尽量用好一点的方法。