import java.io.*; import java.math.BigInteger; import java.util.HashMap; public class prob62 { HashMap hm; public prob62() { hm = new HashMap(); long i,x; String q = "", n; BigInteger r = BigInteger.ONE; for (i = 2; i < 100000; i++) { r = new BigInteger("" + i); r = r.pow(3); q = countDigits(r.toString()); Integer m = (Integer)(hm.get(q)); if (m == null) { hm.put(q,1); } else if (m.intValue() == 4) { break; } else { hm.put(q,m.intValue() + 1); } } System.out.println("Finding smallest cubic permutation of " + i + "^3 = " + r.toString() + "..."); for (x = 2; x < i; x++) { r = new BigInteger("" + x); r = r.pow(3); if (q.equals(countDigits(r.toString()))) { System.out.println("Found! " + x + "^3 = " + r.toString()); break; } } } public static void main(String [] args) { prob62 p = new prob62(); } public static String countDigits(String x) { int [] digits = {0,0,0,0,0,0,0,0,0,0}; int j; for (j = 0; j < x.length(); j++) { //String c = x.substring(j,j+1); digits[Integer.parseInt(x.substring(j,j+1))]++; } return ("" + digits[0] + "" + digits[1] + "" + digits[2] + "" + digits[3] + "" + digits[4] + "" + digits[5] + "" + digits[6] + "" + digits[7] + "" + digits[8] + "" + digits[9]); } }