三级
C++ 算法考级专栏
真题分析、矩阵探测、递归回溯与基础语法
🎨 视觉封面【GESP】C++三级真题 luogu-B3867 [GESP202309 三级] 小杨的储蓄
📅 2025-05-07·✍️ OneCoder·计算中...·⏱️ 4 分钟
#GESP#C++#一维数组
GESP三级真题,一维数组相关,难度★✮☆☆☆。
luogu-B3867 [GESP202309 三级] 小杨的储蓄
题目要求
题目描述
小杨共有 个储蓄罐,编号从 到 。从第 天开始,小杨每天都会往存钱罐里存钱。具体来说,第 天他会挑选一个存钱罐 ,并存入 元钱。过了 天后,他已经忘记每个储蓄罐里都存了多少钱了,你能帮帮他吗?
输入格式
输入 行,第一行两个整数 ;第二行 个整数,其中第 个整数为 (保证 )。
每行的各个整数之间用单个空格分隔。
保证 ;。
输出格式
输出 个用单个空格隔开的整数,其中第 个整数表示编号为 的存钱罐中有多少钱()。
输入输出样例 #1
输入 #1
CONSOLE
2 行
2 3
0 1 0
输出 #1
CONSOLE
1 行
4 2
输入输出样例 #2
输入 #2
CONSOLE
2 行
3 5
0 0 0 2 0
输出 #2
CONSOLE
1 行
11 0 4
说明/提示
样例解释 1:
小杨在第 天、第 天、第 天分别向 号、 号、 号存钱罐存了 元钱、 元钱、 元钱,因此 号存钱罐有 元钱,而 号存钱罐有 元钱。
题目分析
解题思路
本题的解题思路可以分为以下几个步骤:
-
读取输入数据:
- 读取存钱罐数量N和天数D
- 创建长度为N的数组,用于记录每个存钱罐的金额,初始化为0
-
处理每天的存钱操作:
- 循环D天,每天:
- 读取当天选择的存钱罐编号
- 将当天对应的金额(即天数)加到对应存钱罐中
- 循环D天,每天:
-
输出结果:
- 遍历数组,输出每个存钱罐的最终金额
举例说明: 假设N=2,D=3,存钱顺序为[0,1,0]
- 第1天:向0号存钱罐存1元
- 第2天:向1号存钱罐存2元
- 第3天:向0号存钱罐存3元 最终0号存钱罐有4元(1+3),1号存钱罐有2元
复杂度分析:
- 时间复杂度:,需要处理D天的存钱操作
- 空间复杂度:,需要一个长度为N的数组存储结果
示例代码
C++
23 行
#include <iostream>
int main() {
// 声明变量N和D,分别表示存钱罐数量和天数
int N, D;
std::cin >> N >> D;
// 创建数组存储每个存钱罐的金额,初始化为0
int ary[N] = {0};
// 循环D天,每天读取存钱罐编号并累加对应金额
for (int i = 1; i <= D; i++) {
int idx;
std::cin >> idx;
ary[idx] += i; // 第i天存入i元钱
}
// 输出每个存钱罐的最终金额
for (int i = 0; i< N; i++) {
std::cout << ary[i] << " ";
}
return 0;
}
💡 OneCoder 资源指引
所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI
🤝 技术交流与答疑
欢迎加入:C++ GESP/CSP 考级答疑群(688906745) 与 Java/Python交流群(982860385),点击可直接加群。
📚
猜你想读 · 相关文章推荐
GESP 编程与算法 · 三级⏱️ 4 分钟
【GESP】C++三级练习 luogu-B2064, 斐波那契数列
斐波那契数列本身可能并不一定涉及数组知识点,但本题中要求的输入、输出格式涉及到三级知识点一维数组的使用。 题目本身对小学生来说,也是有一定难度的。
阅读全文 →
GESP 编程与算法 · 三级⏱️ 4 分钟
【GESP】C++三级练习 luogu-B3661, [语言月赛202209] 排排队
三级知识点一维数组练习,除了应用了数组以外,其余逻辑比较简单,适合初学者。
阅读全文 →
GESP 编程与算法 · 三级⏱️ 3 分钟
【GESP】C++三级练习 luogu-B2087, 与指定数字相同的数的个数
GESP三级知识点一维数组练习,题目本身逻辑不复杂。
阅读全文 →
OneCoder (lihongzheshuai)
一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com
读者讨论与留言
💬 还没有读者留言,快来成为第一个讨论者吧!