文章

【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 进行授权