B4001 [GESP202406 一级] 立方数

· · 题解

欢迎报名洛谷网校,报名课程可以获得对应组别的知识点讲解与答疑服务,期待和大家一起进步!点击图片即可报名。

:::align{center} :::

本题介绍两种做法。

  1. 枚举法。使用循环结构,让 i1,2,3,\dots 一直循环到 n。在这个过程中,如果发现了 i\times i\times i=n 的情况,那么就是存在这么一个正整数,也就是说 n 是立方数。如果没发现这样的 i,说明 n 不是立方数。

参考代码(部分):

________ (________) {
    if (________) { // 让 i 从 1, 2, 3, ..., n 逐一判断
        cout << "Yes";
        flag = true; //有解
    }
}
//还需判断 flag == false 的无解情况
  1. 数学函数法。需要头文件 cmath。在 C++ 中提供了开立方根的函数 cbrt(n),用于计算 n 的立方根。我们使用整型变量 x 令其为 cbrt(n) 的结果。如果 x\times x\times x=n,那么说明 n 是个立方数。这里使用整型变量是用于 cbrt(n) 的小数部分,只有 cbrt(n) 恰为整数结果的时候 n 才是立方数。如果不知道 cbrt 函数,也可以使用 pow(n, 1.0 / 3) 表示 n^\frac{1}{3},也即 \sqrt[3]{n}

参考代码(部分):

int x = ________; // 计算 x 的立方根
if (________) // 根据上述文字说明判断
    cout << "Yes";
else
    cout << "No";