观察下面的加法算式:
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的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不等于1for (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;
因此,在枚举的时候,只用枚举辉 瑞 献