public static void main(String[] args) {
System.out.println(new P33().solve());
}
private int solve() {
Fraction prod = Fraction.ONE;
/*The problem simplifies to looking for any of:
* 1: ax/bx = a/b
* 2: ax/xb = a/b
* 3: xa/xb = a/b
* 4: xa/bx = a/b
*/
for (int a = 1; a < 10; a++) {
for (int b = 0; b < 10; b++) {
for (int x = 0; x < 10; x++) {
int ln = 0;
int ld = 0;
int rn = 0;
int rd = 0;
// case 1
ln = (10 * a) + x;
ld = 10 * b + x;
rn = a;
rd = b;
if (compareEqual(ln, ld, rn, rd)) {
prod=prod.multiplyBy(Fraction.getFraction(ln, ld));
System.out.printf("found: %d/%d = %d/%d\n", ln, ld, rn, rd);
}
// case 2
ln = (10 * a) + x;
ld = 10 * x + b;
rn = a;
rd = b;
if (compareEqual(ln, ld, rn, rd)) {
prod=prod.multiplyBy(Fraction.getFraction(ln, ld));
System.out.printf("found: %d/%d = %d/%d\n", ln, ld, rn, rd);
}
// case 3
ln = (10 * x) + a;
ld = 10 * x + b;
rn = a;
rd = b;
if (compareEqual(ln, ld, rn, rd)) {
prod=prod.multiplyBy(Fraction.getFraction(ln, ld));
System.out.printf("found: %d/%d = %d/%d\n", ln, ld, rn, rd);
}
// case 4
ln = (10 * x) + a;
ld = 10 * b + x;
rn = a;
rd = b;
if (compareEqual(ln, ld, rn, rd)) {
prod=prod.multiplyBy(Fraction.getFraction(ln, ld));
System.out.printf("found: %d/%d = %d/%d\n", ln, ld, rn, rd);
}
}
}
}
System.out.println("Prod is: "+prod);
return prod.getDenominator();
}