public class Vampire {
public static void main(String[] args) {
printVampires(8);
}
private static void printVampires(int n) {
int start = (int) Math.pow(10, n-1);
int end = start * 10;
int low = (int) Math.pow(10, (n/2) - 1);
for (int i=start; i<end; i++) {
int high = (int) Math.sqrt((double)i);
for (int j=low; j<=high; j++) {
if (i % j == 0) {
int k = i / j;
if (areVampires(i, j, k)) {
System.out.println(i + " = " + j + " x " + k);
}
}
}
}
}
private static boolean areVampires(int i, int j, int k) {
char[] vamp = Integer.toString(i).toCharArray();
char[] fangs = (Integer.toString(j) + Integer.toString(k)).toCharArray();
Arrays.sort(vamp);
Arrays.sort(fangs);
return Arrays.equals(vamp, fangs);
}
}