观察下面的加法算式:
祥 瑞 生 辉
+ 三 羊 献 瑞
-------------------
三 羊 生 瑞 气
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
还是用最笨的方法,暴力!!!
将上面的汉字等式变成这样
a b c d
+ e f g b
一一一一一一
e f c b h
可知,
1、a和e不能从0开始穷举。
2、假设abcdefgb,分别表示987654328,那么它们相加的数撑死都不会超过20000,
连蒙带猜基本可以知道e肯定是1
3、现已知e为1,再假设efgb,分别表示1234,则abcd至少需要8766相加才可能越过10000(efcbh),
连蒙带猜基本可以知道a的范围在8-9之间
4、已知a在8-9,e为1,再假设abcd分别表示9876,efgb分表表示1543,两数相加撑死不会超过11xxx(efcbh),
所以可得f的范围在0-1之间
public class HashMapTest {
public static void main(String[] args) {
//a在8-9的范围之间
for (int a = 8; a <= 9; a++) {
for (int b = 0; b <= 9; b++) {
for (int c = 0; c <= 9; c++) {
for (int d = 0; d <= 9; d++) {
//e为1
for (int e = 1; e <= 1; e++) {
//f在0-1的范围之间
for (int f = 0; f <= 1; f++) {
for (int g = 0; g <= 9; g++) {
for (int h = 0; h <= 9; h++) {
if (a != b && a != c && a != d && a != e && a != f && a != g && a != h && b != c && b != d && b != e
&& b != f && b != g && b != h && c != d && c != e && c != f && c != g && c != h && d != e && d != f
&& d != g && d != h && e != f && e != g && e != h && f != g && f != h && g != h)
if (((a * 1000 + b * 100 + c * 10 + d) + (e * 1000 + f * 100 + g * 10 + b)) == (e * 10000 + f * 1000 + c
* 100 + b * 10 + h)) {
System.out.println((a * 1000 + b * 100 + c * 10 + d) + " " + (e * 1000 + f * 100 + g * 10 + b)
+ " " + (e * 10000 + f * 1000 + c * 100 + b * 10 + h));
}
}
}
}
}
}
}
}
}
}
}
答案:1085