给定 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