第七屆藍橋杯javaB組真題解析-湊算式(第三題)


題目

/*
湊算式

     B      DEF
A + --- + ------- = 10
     C      GHI
     
(如果顯示有問題,可以參見【圖1.jpg】)
     
     
這個算式中A~I代表1~9的數字,不同的字母代表不同的數字。

比如:
6+8/3+952/714 就是一種解法,
5+3/1+972/486 是另一種解法。

這個算式一共有多少種解法?

注意:你提交應該是個整數,不要填寫任何多余的內容或說明性文字。
*/

圖1

 

答案

 

29

 

 

代碼

 1 public class Main {
 2     public static void main(String[] args) {
 3         //實現 元素都不相同的全排列 簡單的方法可以用暴力破解的方法 只要把循環中有重復數字的結果剔除就可以
 4         int a, b, c, d, e, f, g, h, i, s=0;
 5         for(a=1;a<10;a++){
 6         for(b=1;b<10;b++){
 7         if(b==a) continue;
 8         for(c=1;c<10;c++){
 9         if(c==a||c==b) continue;
10         for(d=1;d<10;d++){
11         if(d==a||d==b||d==c) continue;
12         for(e=1;e<10;e++) {
13         if(e==a||e==b||e==c||e==d) continue;
14         for(f=1;f<10;f++){
15         if(f==a||f==b||f==c||f==d||f==e) continue;
16         for(g=1;g<10;g++){
17         if(g==a||g==b||g==c||g==d||g==e||g==f) continue;
18         for(h=1;h<10;h++){
19         if(h==a||h==b||h==c||h==d||h==e||h==f||h==g) continue;
20         for(i=1;i<10;i++){
21             if(i==a||i==b||i==c||i==d||i==e||i==f||i==g||i==h) continue;
22             //其中要注意的是,兩個整數相除得到的還是整數,所以要把其中一個整數先乘以 1.0 轉化成浮點數 (建議乘在分子上,因為計算順序不容易出錯)
23             double num = a + b*1.0/c + (100*d+10*e+f)*1.0/(100*g+10*h+i)-10;
24             if(num==0) {
25                 s++; 
26                 //下面會顯示結果項 
27                 /*System.out.println("     "+b+"      "+d+""+e+""+f+"");
28                 System.out.println(""+a+" + --- + ------- = 10");
29                 System.out.println("     "+c+"      "+g+""+h+""+i+"");
30                 System.out.println(a+"   "+b*1.0/c+"     "+(100*d+10*e+f)*1.0/(100*g+10*h+i));
31                 System.out.println();
32                 System.out.println();*/
33             }
34         }
35         }
36         }
37         }
38         }
39         }
40         }
41         }
42         }
43         System.out.println(s);
44     }
45 }

 

 

注釋

就本題目而言用暴力破解會更省事一點,其中要注意的一個小問題就是,整數相除得整數,要細心一點。由本題目牽扯到的全排列方面的算法我會再寫一篇博客

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM