首页 > 其他分享 >求和

求和

时间:2022-12-29 17:23:54浏览次数:31  
标签:求和 sum long int num total a2

给定 n个整数 a1​,a2​,⋅⋅⋅,an​ ,求它们两两相乘再相加的和

 

可以写为S=a1*(a2+a3+...+an)+a2*(a3+a4+...+an)+...+an-1*an;

num和sum数组分别存放元素和元素对应乘的数字 

刚开始我用双层循环来求sum,结果超时

改进:sum[i]=sum[i+1]+num[i+1]

#include <iostream>
using namespace std;
int main()
{
  int total;
  cin>>total;
  int num[total];
  long long int sum[total];
  for(int i=0;i<total;i++)
  {
    cin>>num[i];
  }
  if(total==1)
  {
    cout<<num[0];
    return 0;
  }
  else
  {
    for(int i=0;i<total;i++)
    sum[i]=0;//设置为0
    for(int i=total-2;i>=0;i--)
    {
      sum[i]=sum[i+1]+num[i+1];
    }
    long long int res=0;
    for(int i=0;i<total;i++)
    {
      res+=sum[i]*num[i];
    }
    cout<<res;
    return 0;
    }
}

 

标签:求和,sum,long,int,num,total,a2
From: https://www.cnblogs.com/weinan030416/p/17013035.html

相关文章