B4001 [GESP202406 一级] 立方数
欢迎报名洛谷网校,报名课程可以获得对应组别的知识点讲解与答疑服务,期待和大家一起进步!点击图片即可报名。
:::align{center} :::
本题介绍两种做法。
- 枚举法。使用循环结构,让
i 从1,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 的无解情况
- 数学函数法。需要头文件
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";