#include<stdio.h>
int main()
{
long long int n,s=0,i,num[200010];
long long int ans=0;
scanf("%lld",&n);
for(i=0;i<n;i++)
{
scanf("%d",&num[i]);
s+=num[i];
}
for(i=0;i<n;i++)
{
s=s-num[i];
ans+=num[i]*s;
}
printf("%lld",ans);
return 0;
}
不懂为什么以上代码30分但是以下代码AC了,我觉得运算的答案是一样的,以下是AC代码
#include<stdio.h>
int main()
{
int n,i;
long long int a[200010],b[200010]={0};
long long int ans=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
for(i=1;i<=n;i++)
{
b[i]=b[i-1]+a[i];
}
for(i=1;i<n;i++)
{
ans+=a[i]*(b[n]-b[i]);
}
printf("%lld",ans);
}
希望大佬能给出一组数据或者是解释一下