凑算式
B DEF
A + --- + ------- = 10
C GHI
(如果显示有问题,可以参见【图1.jpg】)
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
B DEF
A + --- + ------- = 10
C GHI
(如果显示有问题,可以参见【图1.jpg】)
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
答案为:29
这道题用暴力的方法就可以了,对一到九进行全排列,然后计算一下等式是不是等于10就好了。
import java.util.Scanner;
public class Main2 {
public static void main(String[] args){
int a=1,b=1,c=1,d=1,e=1,f=1,g=1,h=1,i=1;
int count=0;
int[] flag=new int[10];
for(int m=0;m<10;m++){
flag[m]=-1;
}
for(a=1;a<=9;a++){
if(flag[a]==-1){
flag[a]=1;
for(b=1;b<=9;b++){
if(flag[b]==-1){
flag[b]=1;
for(c=1;c<=9;c++){
if(flag[c]==-1){
flag[c]=1;
for(d=1;d<=9;d++){
if(flag[d]==-1){
flag[d]=1;
for(e=1;e<=9;e++){
if(flag[e]==-1){
flag[e]=1;
for(f=1;f<=9;f++){
if(flag[f]==-1){
flag[f]=1;
for(g=1;g<=9;g++){
if(flag[g]==-1){
flag[g]=1;
for(h=1;h<=9;h++){
if(flag[h]==-1){
flag[h]=1;
for(i=1;i<=9;i++){
if(flag[i]==-1){
float num=(float) 1.0;
num=a+((float)b)/c+((float)(d*100+e*10+f))/(g*100+h*10+i);
if(num==10){
count++;
System.out.println(count);
System.out.println(a+" "+b+" "+c+" "+d+" "+e+" "+f+" "+g+" "+h+" "+i);
}
}
}
flag[h]=-1;
}
}
flag[g]=-1;
}
}
flag[f]=-1;
}
}
flag[e]=-1;
}
}
flag[d]=-1;
}
}
flag[c]=-1;
}
}
flag[b]=-1;
}
}
flag[a]=-1;
}
}
}
}