求和
给定 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; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】