【GESP】C++二级练习 luogu-b3687, [语言月赛202212] 数字口袋
GESP二级练习,循环分支嵌套,难度★✮☆☆☆。
luogu-B3687 [语言月赛202212] 数字口袋
题目要求
题目描述
小 A 有一个口袋,里面可以装整数。他从 $1$ 开始,按从小到大的顺序,依次将每个整数装入口袋。
但是口袋是有限的,大小为 $n$,这就是说,口袋里所有的数字的和不能够超过 $n$。
输入格式
输入只有一行一个整数,表示整数 $n$。
输出格式
输出若干行,每行一个整数,按从小到大的顺序输出口袋里的数字。
样例输入 #1
1
15
样例输出 #1
1
2
3
4
5
1
2
3
4
5
样例输入 #2
1
9
样例输出 #2
1
2
3
1
2
3
数据规模与约定
- 对于 $40\%$ 的数据,$n\le 10^3$;
- 对于 $100\%$ 的数据,$1\le n \le 10^9$。
题目分析
我们可以使用一个循环来模拟这个过程。我们从1开始,每次将当前的数字加到答案中,直到答案大于n为止。在每次循环中,我们输出当前的数字,然后更新答案。
示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
int main() {
int n; // 输入的整数
cin >> n; // 从输入流中读取整数
int ans = 0; // 初始化答案
for (int i = 1;; i++) { // 从1开始的无限循环
if (ans + i > n) { // 如果当前答案加上i超过n,则退出循环
break;
}
cout << i << endl; // 输出当前数
ans += i; // 更新答案
}
return 0;
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页
“luogu-”系列题目已加入洛谷Java、C++初学团队,作业清单,可在线评测,团队名额有限,欢迎加入。
“bcqm-”系列题目可在编程启蒙题库进行在线评测。
本文由作者按照 CC BY 4.0 进行授权