#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int visited[10];

int main()
{
    for (int i = 47; i <= 99; i++)
    {
        for (int i = 0; i < 10; i++)
            visited[i] = 0; //初始化数字状态数组

        stringstream s; //用来将int 转化为string
        string s2, s3;
        s << i * i;
        s2 = s.str(); //s2存平方
        s << i * i * i;
        s3 = s.str(); //s3存立方

        for (int i = 0; i < s2.length(); i++)
            visited[s2[i] - 48] = 1; //遍历平方字符串，将此数字标记为已使用,数字的ASCII-48为数字的数值

        for (int i = 0; i < s3.length(); i++)
            visited[s3[i] - 48] = 1; //同理

        int j;
        for (j = 0; j < 10; j++)
            if (visited[j] == 0) //判断数字是否全部使用
                break;
        if (j == 10) //如果没有跳出，则j为10，所有数字都被使用
            cout << i;
    }
    return 1;
}