您的位置:首页 > 编程语言 > Java开发

第七届蓝桥杯JAVAb组第三题凑算式

2017-04-05 17:30 211 查看

3. 凑算式

       B      DEF 

A + --- + ------- = 10


  
  
 GHI

  
  
 GHI
       C      GHI

这个算式中A~I代表0~9的数字,不同的字母代表不同的数字。   

比如: 

6+8/3+952/714 就是一种解法, 5+3/1+972/486 是另一种解法。 这个算式一共有多少种解法? 

注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。

看举的例可知,此题涉及的是浮点数的运算,很可能有陷阱,不过蓝桥杯的教学视频有提到如何避免。再者,用暴力破解的话,真的太耗时了,然而我还是这么做了... 如果有小可爱找到了更好的方法别忘了告诉我噢~

int a,b,c,d,e,f,g,h,i;
int sum = 0;
for (a = 0; a <= 9; a++) {
for(b = 0; b <= 9; b++) {
if (b == a)
continue;
for(c = 1; c <= 9; c++) {
if (c == a || c == b)
continue;
for(d = 0; d <= 9; d++) {
if (d==a || d==b || d==c)
continue;
for(e = 0; e <= 9; e++) {
if (e==a || e==b || e==c || e==d)
continue;
for(f = 0; f <= 9; f++) {
if (f==a || f==b || f==c || f==d || f ==e)
continue;
for(g = 0; g <= 9; g++) {
if (g==a || g==b || g==c || g==d || g ==e || g == f)
continue;
for(h = 0; h <= 9; h++) {
if (h==a || h==b || h==c || h==d || h==e || h == f || h ==g)
continue;
for(i = 0; i <= 9; i++) {
if (i==a || i==b || i==c || i==d || i==e || i == f || i ==g || i==h)
continue;
if (Math.abs(a + (b+0.0) / (c+0.0) + (100*d+10*e+f+0.0)/(g*100+10*h+i+0.0) - 10) < 1E-8) {
sum += 1;
System.out.printf("%d,%d,%d,%d,%d,%d,%d,%d,%d\n",a,b,c,d,e,f,g,h,i);
}
}
}
}
}
}
}
}
}
}
System.out.print(sum);

我为了验证,输出了所有的情况,共299种,也没找到答案,不知道对不对,哈,望告知!

补充:看到有小可爱算出来是29,but他a~i的范围是1~9,如将我代码中的起点改为1,答案即是一样的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息