当前位置: 首页 > article >正文

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

求和

蓝桥杯每日一题 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=a1a2+a1a3++a1an+a2a3++an2an1+an2an+an1an

解题思路

将这个求和公式转化一下就变成了 : 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)+an2(an1+an)+an1an

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

Accepted
#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;
}
思考

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

备注

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


http://www.kler.cn/a/443258.html

相关文章:

  • 【数据库系统概论】第5章 数据库完整性【!触发器】
  • 【硬件测试】基于FPGA的BPSK+帧同步系统开发与硬件片内测试,包含高斯信道,误码统计,可设置SNR
  • kotlin sortedBy 与sortedWith的区别
  • 功能篇:mybatis中实现缓存
  • 基于springboot的网上商城购物系统
  • 测试ip端口-telnet开启与使用
  • 用QT制作的倒计时软件
  • AIGC--------游戏开发中的AIGC:剧情、角色与场景生成
  • 探秘 MFC 中的 AFX_MANAGE_STATE:确保模块资源管理井然有序
  • 云消息队列 RabbitMQ 版
  • 【杂谈】服务端能同时处理多少个 Socket 连接?背后的资源与限制分析
  • CSS|08 浮动清除浮动
  • 实验6-2 基于二叉链表存储结构实现二叉树的基本操作
  • 软件防查盗版的终结者:服务器防病毒技术
  • C# OpenCV机器视觉:图像旋转(让生活的角度更美好!)
  • Flink2.0未来趋势中需要注意的一些问题
  • bridge between Lua world and the .NET
  • Java学习笔记(13)——面向对象编程
  • 初学stm32 --- 窗口看门狗
  • std::queue的pop操作会调用对象的析构函数
  • @PostConstruct注解解释!!!!
  • 【React前端】大屏适配解决方案从框架结构到实现(超详细)(附代码)
  • Java项目--仿RabbitMQ的消息队列--网络通信协议设计
  • [BJDCTF2020]ZJCTF,不过如此 1
  • gbase8s之常用sql脚本
  • 浅谈单例模式