二级
C++ 算法考级专栏
真题分析、矩阵探测、递归回溯与基础语法
🎨 视觉封面【GESP】C++二级练习 luogu-p2669, [NOIP2015 普及组] 金币
📅 2025-01-27·✍️ OneCoder·计算中...·⏱️ 6 分钟
#GESP#C++#多重循环
GESP二级练习,循环分支嵌套,略有难度,难度★✮☆☆☆。
luogu-P2669 [NOIP2015 普及组] 金币
题目要求
题目描述
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续 天每天收到 枚金币后,骑士会在之后的连续 天里,每天收到 枚金币。
请计算在前 天里,骑士一共获得了多少金币。
输入格式
一个正整数 ,表示发放金币的天数。
输出格式
一个正整数,即骑士收到的金币数。
样例输入 #1
CONSOLE
1 行
6
样例输出 #1
CONSOLE
1 行
14
样例输入 #2
CONSOLE
1 行
1000
样例输出 #2
CONSOLE
1 行
29820
提示
【样例 1 说明】:
骑士第一天收到一枚金币;第二天和第三天,每天收到两枚金币;第四、五、六天,每天收到三枚金币。因此一共收到 枚金币。
对于 的数据,。
题目分析
方法一
- 初始化一个变量
count来存储骑士收到的金币总数。 - 初始化一个变量
days来表示当前的天数,初始值为 1。 - 使用一个循环来模拟每一天的金币发放。每次循环,骑士会在连续
days天内,每天收到days枚金币。 - 在每次循环中,使用一个内部循环来模拟连续
days天的金币发放。每天,count会增加days枚金币,i会增加 1,表示时间流逝。 - 当内部循环结束后,
days会增加 1,表示骑士开始收到更多的金币。 - 当
i等于或超过k时,循环结束,输出count的值,即骑士在前k天收到的金币总数。4
方法二
- 初始化一个变量
count来存储骑士收到的金币总数。 - 初始化一个变量
days来表示当前的天数,初始值为 1。 - 初始化一个变量
now_coins来表示当前天数收到的金币数,初始值为 1。 - 使用一个循环来模拟每一天的金币发放。每次循环,骑士会在连续
days天内,每天收到now_coins枚金币。 - 在每次循环中,
count会增加now_coins枚金币,days会减少 1,表示时间流逝。 - 当
days等于 0 时,now_coins会增加 1,表示骑士开始收到更多的金币,days会重置为now_coins。 - 当
i等于或超过k时,循环结束,输出count的值,即骑士在前k天收到的金币总数。
示例代码
方法一代码
C++
18 行
#include <iostream>
using namespace std;
int main() {
int k; // 输入的整数
cin >> k;
int count = 0; // 计数器
int days = 1; // 天数
int temp_count = 0; // 临时计数器
for (int i = 1; i <= k; ) { // 主循环
for (int j = 1; j <= days && i <= k; j++) { // 内循环
count += days; // 计数器累加
i++; // 主循环计数器递增
}
days++; // 天数递增
}
cout << count; // 输出计数器的值
return 0;
}
方法二代码
C++
19 行
#include <iostream>
using namespace std;
int main() {
int k; // 输入的整数
cin >> k;
int count = 0; // 计数器
int days = 1; // 当前天数
int now_coins = 1; // 当前天数收到的金币数
for (int i = 1; i <= k; i++) { // 从1到k天的循环
count += now_coins; // 计数器累加当前天数的金币数
days--; // 天数减1
if (days == 0) { // 如果天数减到0
now_coins++; // 当前天数收到的金币数增加1
days = now_coins; // 重置天数为当前天数收到的金币数
}
}
cout << count; // 输出计数器的值
return 0;
}
💡 OneCoder 资源指引
所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI
🤝 技术交流与答疑
欢迎加入:C++ GESP/CSP 考级答疑群(688906745) 与 Java/Python交流群(982860385),点击可直接加群。
📚
猜你想读 · 相关文章推荐
OneCoder (lihongzheshuai)
一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com
读者讨论与留言
💬 还没有读者留言,快来成为第一个讨论者吧!