原题:
小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。
你能猜出这个数字是多少吗?
解题思路:
一个两位数的平方可能是一个三或四位数
一个两位数的立方可能是一个四、五、六位数
所以结果一定是一个两位数,而且这个两位数的立方必须是一个六位数。
代码实现:
#include <iostream>
using namespace std;
bool IsOk(int number)
{
int s[10] = {0};
int square = number * number, cube = square * number;
while (square)
{
s[square % 10] = 1;
square /= 10;
}
while (cube)
{
s[cube % 10] = 1;
cube /= 10;
}
for (auto i: s)
if (i != 1) return false;
return true;
}
int main()
{
for (int i = 10; i < 100; ++i)
if (IsOk(i))
cout << i;
return 0;
}
运行结果:
69