java编程思想第四章练习题10:
package net.mindview.test;
public class Test10 {
public static void ghost1() {
for (int i = 1000; i < 10000; i++) {
String str = String.valueOf(i);
char[] ch = str.toCharArray();
int i1 = 0, i2 = 0;
label: for (int j = 0; j < 4; j++) {
for (int k = 0; k < 4; k++) {
if (j != k) {
i1 = Integer.parseInt(String.valueOf(ch[j])) * 10 + Integer.parseInt(String.valueOf(ch[k]));
for (int l = 0; l < 4; l++) {
if (l != j && l != k) {
// ch数组的下标之和是6,找到了其中3个下标,计算得出最后一个下标
i2 = Integer.parseInt(String.valueOf(ch[l])) * 10
+ Integer.parseInt(String.valueOf(ch[6 - j - k - l]));
if (i == i1 * i2) {
System.out.println(i + "=" + i1 + "*" + i2);
break label;
}
}
}
}
}
}
}
}
static int com(int a, int b) {
return a * 10 + b;
}
public static void ghost3() {
for (int i = 1000; i < 10000; i++) {
int a = i / 1000;
int b = (i / 100) % 10;
int c = (i / 10) % 10;
int d = i % 10;
int[] num = { a, b, c, d };
int num1 = 0, num2 = 0;
outer: for (int j = 0; j < num.length; j++) {
for (int k = 0; k < num.length; k++) {
if (j != k) {
num1 = num[j] * 10 + num[k];
for (int l = 0; l < num.length; l++) {
if (l != j && l != k) {
num2 = num[l] * 10 + num[6 - j - k - l];
if (i == num1 * num2) {
System.out.println(i + "=" + num1 + "*" + num2);
break outer;
}
}
}
}
}
}
}
}
public static void ghost2() {
for (int i = 1000; i < 10000; i++) {
int a = i / 1000;
int b = (i / 100) % 10;
int c = (i / 10) % 10;
int d = i % 10;
int j1 = com(a, b);
int j2 = com(b, a);
int k1 = com(c, d);
int k2 = com(d, c);
if (i == j1 * k1) {
System.out.println(i + "=" + j1 + "*" + k1);
}
if (i == j1 * k2) {
System.out.println(i + "=" + j1 + "*" + k2);
}
if (i == j2 * k1) {
System.out.println(i + "=" + j2 + "*" + k1);
}
if (i == j2 * k2) {
System.out.println(i + "=" + j2 + "*" + k2);
}
if (b != c) {
int x1 = com(a, c);
int x2 = com(c, a);
int y1 = com(b, d);
int y2 = com(d, b);
if (i == x1 * y1) {
System.out.println(i + "=" + x1 + "*" + y1);
}
if (i == x1 * y2) {
System.out.println(i + "=" + x1 + "*" + y2);
}
if (i == x2 * y1) {
System.out.println(i + "=" + x2 + "*" + y1);
}
if (i == x2 * y2) {
System.out.println(i + "=" + x2 + "*" + y2);
}
}
int p1 = com(a, d);
int p2 = com(d, a);
int q1 = com(b, c);
int q2 = com(c, b);
if (i == p1 * q1) {
System.out.println(i + "=" + p1 + "*" + q1);
}
if (i == p1 * q2) {
System.out.println(i + "=" + p1 + "*" + q2);
}
if (i == p2 * q1) {
System.out.println(i + "=" + p2 + "*" + q1);
}
if (i == p2 * q2) {
System.out.println(i + "=" + p2 + "*" + q2);
}
}
}
public static void main(String[] args) {
ghost1();
System.out.println("---------------");
ghost2();
System.out.println("------------");
ghost3();
}
}