1 条题解

  • 0
    @ 2025-8-24 21:16:29

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar chen_zhe
    Aya 敲可爱的~

    搬运于2025-08-24 21:16:28,当前版本为作者最后更新于2024-12-16 16:40:11,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    欢迎报名洛谷网校,期待和大家一起进步!

    本题介绍两种做法。

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

    参考代码(部分):

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

    参考代码(部分):

    int x = cbrt(n);
    if (x * x * x == n)
        cout << "Yes";
    else
        cout << "No";
    
    • 1

    信息

    ID
    10487
    时间
    1000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者