【蓝桥杯每日一题】求和——前缀和

求和

蓝桥杯每日一题 2024-12-17 求和 前缀和

题目大意

给定 n n n 个整数 a 1 , a 2 , ... , a n a_1, a_2, \ldots, a_n a1,a2,...,an,求它们两两相乘再相加的和,即:

S = a 1 ⋅ a 2 + a 1 ⋅ a 3 + ... + a 1 ⋅ a n + a 2 ⋅ a 3 + ... + a n − 2 ⋅ a n − 1 + a n − 2 ⋅ a n + a n − 1 ⋅ a n S = a_1 \cdot a_2 + a_1 \cdot a_3 + \ldots + a_1 \cdot a_n + a_2 \cdot a_3 + \ldots + a_{n-2} \cdot a_{n-1} + a_{n-2} \cdot a_n + a_{n-1} \cdot a_n S=a1⋅a2+a1⋅a3+...+a1⋅an+a2⋅a3+...+an−2⋅an−1+an−2⋅an+an−1⋅an

解题思路

将这个求和公式转化一下就变成了 : S = a 1 ⋅ ( a 2 + a 3 + ... + a n ) + a 2 ⋅ ( a 3 + ... + a n ) + a n − 2 ⋅ ( a n − 1 + a n ) + a n − 1 ⋅ a n S = a_1 \cdot ( a_2 + a_3 + \ldots + a_n) + a_2 \cdot (a_3 + \ldots + a_n) + a_{n-2} \cdot (a_{n-1} + a_n) + a_{n-1} \cdot a_n S=a1⋅(a2+a3+...+an)+a2⋅(a3+...+an)+an−2⋅(an−1+an)+an−1⋅an

对于括号里的这些值的和就表示某个区间的前缀和。

Accepted
cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
const int N = 200000;
ll a[N],b[N];
ll n;

int main()
{
    cin>>n;
    for(int i = 1;i <= n;i++) {
        cin>>a[i];
        b[i] = b[i-1] + a[i];
    }
    ll sum = 0;
    for(int i = 1;i < n;i++) {
        sum += a[i] * (b[n]-b[i]);
    }
    cout<<sum<<endl;
    return 0;
}
思考

这道题算是前缀和的简单应用吧,学过前缀和就可以!

备注

想要一起备赛的同学可以评论区或私信留言!

相关推荐
星星.7225 小时前
C++算法竞赛|二分查找与二分答案:边界模板、浮点二分、STL
数据结构·c++·算法
sel_95 小时前
【OPD论文导读(二)】OPD(On-Policy Distillation)全景调研:十篇论文讲透“在自己生成的内容上学习“这件事
人工智能·python·深度学习·学习·算法·语言模型
金幄科技6 小时前
RAG第四篇:重排序 Rerank——粗召回之后,为什么还需要一次精排
人工智能·算法·ai·ai编程
M78佐菲6 小时前
Linux学习笔记:文件IO
linux·笔记·学习·算法
lhldsg7 小时前
课程排课系统实战指南:从数据库设计到算法调优全流程解析
java·数据库·算法·小程序
BSD_HY7 小时前
薄膜开关矩阵扫描电路设计中的防鬼键措施
人工智能·算法·矩阵·人机交互·薄膜开关·源头工厂·深圳工厂
linux-hzh7 小时前
百日算法修炼 · Day 17
数据结构·算法
XUEYUAN52127 小时前
代理日志分析与监控:代理池健康状态巡检与分级告警体系搭建(运维实战)
运维·网络·网络协议·tcp/ip·算法·架构
sel_97 小时前
【多轮对话论文导读(七)】多轮对话论文阅读笔记:从数据生成、用户模拟到上下文重构与长期记忆
论文阅读·人工智能·笔记·深度学习·算法·语言模型·自然语言处理
远游客07137 小时前
为什么用「年×100+月」做比较
算法·gin