蓝桥杯-求和【前缀和】

时间:2024-04-13 07:04:11

60%

#include <iostream>
using namespace std;
int main()
{
  int n;
  cin>>n;
  int a[n];
  int s;
  for(int i=0;i<n;i++)
  cin>>a[i];
  for(int i=0;i<n;i++)
  {
  	for(int j=i+1;j<n;j++)
  	{
  		s+=a[i]*a[j];
	  }
   } 
   cout<<s;
  return 0;
}

100%

#include <iostream>
using namespace std;
int main()
{
  int n;
  cin>>n;
  int a[n];
  long long s=0;
  for(int i=1;i<=n;i++)
  cin>>a[i];
  long long sum[n]={0};
  
  for(int i=1;i<n;i++)
  sum[i]=a[i]+sum[i-1];//计算前缀和
   
  for(int i=2;i<=n;i++)
  {
  	s+=sum[i-1]*a[i];
  }
   cout<<s;
  return 0;
}

一定要记得最终结果开long long