求助两段代码为什么得分不同
查看原帖
求助两段代码为什么得分不同
990672
Yu2004楼主2024/12/28 17:12
#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);
}

希望大佬能给出一组数据或者是解释一下

2024/12/28 17:12
加载中...