假设我们有一个数字 n。我们必须检查我们是否可以像 a^b 一样表达它。
所以,如果输入像 125,那么输出将是 True,因为 125 = 5^3,所以 a = 5 和 b = 3
为了解决这个问题,我们将按照以下步骤操作 -
如果 num 与 1 相同,则:
返回真
对于初始化 i := 2,当 i * i <= num 时,更新(将 i 增加 1),执行:
返回真
价值 := log(num)/log(i)
如果 val - val 的整数部分接近 0,则:
返回假
让我们看看以下实现以获得更好的理解 -
#include<iostream> #include<cmath> using namespace std; bool solve(int num) { if (num == 1) return true; for (int i = 2; i * i <= num; i++) { double val = log(num) / log(i); if ((val - (int)val) < 0.00000001) return true; } return false; } int main() { int n = 125; cout << solve(n); }
125输出结果
1