weinan030416

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

求和

给定 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;
    }
}
复制代码

 

posted on   楠030416  阅读(35)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示