#include struct cube { long long minc; int nc; }; struct cube cubes[10000000]; int ncubes; int isperm(long long x, long long y) { int a[10]; for (int i = 0; i < 10; i++) a[i] = 0; while (x) { a[x%10]++; x /= 10; } while (y) { a[y%10]--; y /= 10; } for (int i = 0; i < 10; i++) { if (a[i] != 0) return 0; } return 1; } int main() { ncubes = 0; int i = 0; while (1) { long long t = (long long)i*i*i; int hasperm = 0; for (int j = 0; j < ncubes; j++) { if (isperm(cubes[j].minc, t)) { cubes[j].nc++; if (cubes[j].nc == 5) { printf("%lld\n", cubes[j].minc); return 0; } hasperm = 1; break; } } if (hasperm == 0) { cubes[ncubes].minc = t; cubes[ncubes].nc = 1; ncubes++; } i++; } }