断更要努力补!
观察下面的加法算式:
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一)
分析一下吧~ 首先我们读完题,可以发现,有八个不同的数字(祥,瑞,生,辉, 三,羊,献, 气) 我们可以对八个数的排列分别枚举0~9
同时题中条件知: “三”,不能为零
package com.kang.practice;
public class Demo03 {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (i != j)
for (int k = 0; k < 10; k++) {
if (i != k && j != k)
for (int q = 0; q < 10; q++) {
if (i != q && j != q && k != q)
for (int m = 0; m < 10; m++) {
if (i != m && j != m && k != m && q != m)
for (int n = 0; n < 10; n++) {
if (i != n && j != n && k != n && q != n && m != n)
for (int o = 0; o < 10; o++) {
if (i != o && j != o && k != o && q != o && m != o && n != o) {
int x1 = i * 1000 + j * 100 + k * 10 + q;
int x2 = m * 1000 + n * 100 + o * 10 + j;
if (result(x1, x2, i, j, k, q, m, n, o)) {
System.out.println(" " + x1);
System.out.println(" " + x2);
System.out.println(x1 + x2);
}
}
}
}
}
}
}
}
}
}
public static boolean result(int x1, int x2, int i, int j, int k, int l, int m, int n, int o) {
int count = x1 + x2;
if (count < 10000) return false;
int a = count % 10;
if (a == i || a == j || a == k || a == l || a == m || a == n || a == o) return false;
count = count / 10;
a = count % 10;
if (a != j) return false;
count = count / 10;
a = count % 10;
if (a != k) return false;
count = count / 10;
a = count % 10;
if (a != n) return false;
count = count / 10;
a = count % 10;
if (a != m) return false;
return true;
}
}