【GESP】C++一级真题(202406)luogu-B4001,立方数
2024年6月GESP一级真题。循环类问题。
luogu-B4001
题目要求
描述
小杨有一个正整数 n,他想知道 n 是否是一个立方数。一个正整数 n 是立方数当且仅当存在一个正整数 x 满足 x*x*x=n 。
输入
第一行包含一个正整数 n。
输出
如果正整数 n 是一个立方数,输出 Yes,否则输出 No。
输入样例-1
8
输出样例-1
Yes
输入样例-2
9
输出样例-2
No
题目分析
通过循环从1到n的每一个数进行检查
- 定义一个标志变量用来保存在循环中是否找到了立方根,默认为否
- 通过 i * i * i == n 来判断n是否是立方数,如果是,修改标志变量值为是,直接退出循环
- 如果循环结束,判断条件均为成立则,则标志变量值未改变。
- 最后,根据标志变量的值来判断输出Yes/No即可。
示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
int main() {
int n; // 定义变量n来存储输入的正整数
cin >> n; // 从标准输入流中读取正整数n
int u = 0; // 初始化计数器u为0,用于记录是否找到立方根
for (int i = 1; i <= n; i++) { // 从1开始遍历到n
if (i * i * i == n) { // 检查i是否是n的立方根
u += 1; // 如果是,则计数器u加1
} else {
u += 0; // 如果不是,则计数器u不变
}
}
if (u == 0) { // 如果计数器u为0,则n不是立方数
cout << "No"; // 输出No
} else { // 如果计数器u不为0,则n是立方数
cout << "Yes"; // 输出Yes
}
return 0; // 程序返回0,表示执行成功
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
题目已加入洛谷Java、C++初学团队,作业清单,可在线评测,团队名额有限,欢迎加入。
本文由作者按照 CC BY 4.0 进行授权