三羊献瑞
观察下面的加法算式:
祥 瑞 生 辉
+ 三 羊 献 瑞
-------------------
三 羊 生 瑞 气
+ 三 羊 献 瑞
-------------------
三 羊 生 瑞 气
(如果有对齐问题,可以参看【图1.jpg】)
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
使用枚举法暴力破解
代码如下所示:
public class nine { public static void main(String[] args){ for(int a=1;a<10;a++){ //a祥 for(int b=0;b<10;b++){ //b瑞 if(b!=a){ for(int c=0;c<10;c++){ //c生 if(c!=a&&c!=b){ for(int d=0;d<10;d++){ //d辉 if(d!=a&&d!=b&&d!=c){ int x=1000*a+100*b+10*c+d; for(int e=1;e<10;e++){ //e三 if(e!=a&&e!=b&&e!=c&&e!=d){ for(int f=0;f<10;f++){ //f羊 if(f!=a&&f!=b&&f!=c&&f!=d&&f!=e){ for(int g=0;g<10;g++){ //g献 if(g!=a&&g!=b&&g!=c&&g!=d&&g!=e&&g!=f){ int y=1000*e+100*f+10*g+b; for(int h=0;h<10;h++){ //h气 if(h!=a&&h!=b&&h!=c&&h!=d&&h!=e&&h!=f&&h!=g){ int z=10000*e+1000*f+100*c+10*b+h; if(x+y==z){ System.out.println(1000*e+100*f+10*g+b); } } } } } } } } } } } } } } } } } }
运行结果为:
1085
这道题由于没有设计到除法,所以解法很简单,直接for循环嵌套即可
凑算式
B DEF
A + --- + ------- = 10
C GHI
(如果显示有问题,可以参见【图1.jpg】)
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
这里需要注意的是java中的除法(所有语言的除法)有取整的效果;eg: 5/2=2 而不是2.5
所以在解决这一类有除法的算式时,需要将式子全部通分,成为只有乘法运算的式子即可
代码如下:
public class ten { public static int count = 0; public static void main(String[] args){ for(int a=1;a<10;a++){ for(int b=1;b<10;b++){ if(b!=a){ for(int c=1;c<10;c++){ if(c!=a&&c!=b){ for(int d=1;d<10;d++){ if(d!=a&&d!=b&&d!=c){ for(int e=1;e<10;e++){ if(e!=a&&e!=b&&e!=c&&e!=d){ for(int f=1;f<10;f++){ if(f!=a&&f!=b&&f!=c&&f!=d&&f!=e){ for(int g=1;g<10;g++){ if(g!=a&&g!=b&&g!=c&&g!=d&&g!=e&&g!=f){ for(int h=1;h<10;h++){ if(h!=a&&h!=b&&h!=c&&h!=d&&h!=e&&h!=f&&h!=g){ for(int i=1;i<10;i++){ if(i!=a&&i!=b&&i!=c&&i!=d&&i!=e&&i!=f&&i!=g&&i!=h){ int m=(d*100+e*10+f);; int n=g*100+h*10+i; if((b*n+c*m)==(10-a)*(c*n)){ count++; } } } } } } } } } } } } } } } } } } System.out.println(count+" "); } }
运行结果如下:
29