题目:三羊献瑞
观察下面的加法算式:
祥 瑞 生 辉
+ 三 羊 献 瑞
-------------------
三 羊 生 瑞 气
(如果有对齐问题,可以参看【图1.jpg】)
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
答案:1085
代码:可以一个简单的暴力循环破解
public class S_Tree {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n = 0;
int m = 0;
int sum = 0;
for(int a=1;a<10;a++)
for(int b=0;b<10;b++)
if(a != b)
for(int c=0;c<10;c++)
if(a!=c && b!=c)
for(int d=0;d<10;d++)
if(a!=d && b!=d && c!=d)
for(int e=1;e<10;e++)
if(a!=e && b!=e && c!=e && d!=e)
for(int f=0;f<10;f++)
if(a!=f && b!=f && c!=f && d!=f && e!=f)
for(int g=0;g<10;g++)
if(a!=g && b!=g && c!=g && d!=g && e!=g && f!=g)
for(int h=0;h<10;h++)
if(a!=h && b!=h && c!=h && d!=h && e!=h && f!=h && g!=h)
{
int x = 1000*a+100*b+10*c+d;
int y = 1000*e+100*f+10*g+b;
int z = 10000*e+1000*f+100*c+10*b+h;
if(x+y == z)
{
System.out.println(e +" "+ f +" "+ g +" "+ b);
}
}
}
}
这个就是简单的for循环遍历,
当然也可以通过简单的判断来去掉几个答案
首先千进万,然后三一定是1最大的书9+8才能进一。
祥+1 + 1/0 = 羊,若他加了个1,则响可为8,此时羊为0,若羊为0,则瑞必为9,否则没法进一,但若为9,生也要为0故不行
此时祥只能为9,然后9+1+1/0=10+羊,羊不为1,故羊为0此式子化为
9 a
b c
1 0
d a
1 0 b
a e
然后代码如下
public class S_Tree {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n = 0;
int m = 0;
int sum = 0;
for(int a=2;a<9;a++)
for(int b=2;b<9;b++)
if(a != b)
for(int c=2;c<9;c++)
if(a!=c && b!=c)
for(int d=2;d<9;d++)
if(a!=d && b!=d && c!=d)
for(int e=2;e<9;e++)
if(a!=e && b!=e && c!=e && d!=e)
{
int x =100*a+10*b+c;
int y = 10*d+a;
int z = 100*b+10*a+e;
if(x+y==z)
System.out.println(d+ " " +a);
}
}
}
最后输出的是献瑞两个字