- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
import java.util.*;
class Euler32 {
public static void main(String[] args) {
int total=0;
LinkedList<Integer> remDigits=new LinkedList<Integer>();
for(int n=1;n<=9;n++)
remDigits.add(new Integer(n));
for(int n9=2;n9<9;n9++){ //starting digit can't be 1 or 2
int thouC=(remDigits.get(n9)).intValue();
remDigits.remove(n9);
for(int n8=0;n8<8;n8++){
int hundC=(remDigits.get(n8)).intValue();
remDigits.remove(n8);
for(int n7=0;n7<7;n7++){
int tenC=(remDigits.get(n7)).intValue();
remDigits.remove(n7);
for(int n6=0;n6<6;n6++){
int oneC=(remDigits.get(n6)).intValue();
remDigits.remove(n6);
int c=1000*thouC+100*hundC+10*tenC+oneC;
boolean found=false;
int n5=0;
while((n5<5)&&(found==false)){
int ab1=(remDigits.get(n5)).intValue();
remDigits.remove(n5);
int n4=0;
while((n4<4)&&(found==false)){
int ab2=(remDigits.get(n4)).intValue();
remDigits.remove(n4);
int n3=0;
while((n3<3)&&(found==false)){
int ab3=(remDigits.get(n3)).intValue();
remDigits.remove(n3);
int n2=0;
while((n2<2)&&(found==false)){
int ab4=(remDigits.get(n2)).intValue();
remDigits.remove(n2);
int ab5=(remDigits.get(0)).intValue();
int a3=100*ab1+10*ab2+ab3;
int a4=1000*ab1+100*ab2+10*ab3+ab4;
int b2=10*ab4+ab5;
int b1=ab5;
if((a3*b2)==c){
found=true;
total+=c;
System.out.println(c+" = "+a3+"x"+b2);
}
else if((a4*b1)==c){
found=true;
total+=c;
System.out.println(c+" = "+a4+"x"+b1);
}
remDigits.add(n2,new Integer(ab4));
n2++;
}
remDigits.add(n3,new Integer(ab3));
n3++;
}
remDigits.add(n4,new Integer(ab2));
n4++;
}
remDigits.add(n5,new Integer(ab1));
n5++;
}
remDigits.add(n6,new Integer(oneC));
}
remDigits.add(n7,new Integer(tenC));
}
remDigits.add(n8,new Integer(hundC));
}
remDigits.add(n9,new Integer(thouC));
}
System.out.println(total);
}
}