观察下面的加法算式:
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
答案
代码
public class _03三羊献瑞 {
public static void main(String[] args) {
//c == 生 b == 瑞 g == 献 d == 辉 i == 气
for (int b = 2; b < 9; b++) { //数字不同,所以b、d、g、c不等于1
for (int d = 2; d < 9; d++) {
if (b == d){continue;}//数字不同
for (int g = 2; g < 9; g++) {
if (g == b || g == d){continue;}
int c = b + 1;
if (c == b || c == d || c == g){continue;}
if (c + g <= 10){continue;}//c + g > 10
/*
9 b c d
+ 0 0 g b
--------------------
1 0 c b i
*/
int sum = 9000 + b * 100 + c * 10 + d + 1000 + g * 10 + b;
for (int i = 2; i < 9; i++){
if (i == b || i == d || i == g || i == c){continue;}
if(sum <= (10000 + c * 100 + b * 10 + i) && sum >= (10000 + c * 100 + b * 10 + i)){
System.out.printf("%2d%d%d%d\n",9,b,c,d);
System.out.printf("%2d%d%d%d\n",1,0,g,b);
System.out.printf("%d\n",sum);
System.out.println("-------\n");
}
}
}
}
}
}
}
分析
要求:求出三羊献瑞所代表的数字,即算式的第二行。
注意:进位只能进1位。
仔细观察算式,祥+三--->进位--->三=1--->祥=9,羊=0
瑞+0=生--->生=瑞+1;生+献>10;
因此,在枚举的时候,只用枚举辉 瑞? 献