1. 程式人生 > >2015年藍橋杯C/C++組B組第三題:三羊獻瑞

2015年藍橋杯C/C++組B組第三題:三羊獻瑞

三羊獻瑞

觀察下面的加法算式:

    祥 瑞 生 輝

+ 三 羊 獻 瑞

三 羊 生 瑞 氣

(如果有對齊問題,可以參看【圖1.jpg】)

其中,相同的漢字代表相同的數字,不同的漢字代表不同的數字。

請你填寫“三羊獻瑞”所代表的4位數字(答案唯一),不要填寫任何多餘內容。

我用的是迴圈暴力破解

   #include <stdio.h>

    int main()
    {
        int a,b,c,d;//祥、瑞、生、輝
        int e,f,g,h;//三、羊、獻、氣

        int sum0;
        int
sum1; int sum; for(a = 1;a <= 9;a++) //注意首位不能為1 for(b = 0;b <= 9;b++) for(c = 0;c <= 9;c++) for(d = 0;d <= 9;d++) for(e = 1;e <= 9;e++) //注意首位不能為1 for(f = 0;f <= 9;f++) for(g = 0;g <= 9;g++) for
(h = 0;h <= 9;h++) { if(a != b && a != c && a != d && a != e && a ! = f && a != g && a != h && b != c && b != d && b != e && b != f && b != g && b
!= h && c != d && c != e && c != f && c != g && c!= h && d != e && d != f && d != g && d != h && e != f && e != g && e != h && f != g && f != h && g != h) //排列問題,兩兩不相等 { sum0 = a * 1000 + b * 100 + c *10 + d; sum1 = e * 1000 + f * 100 + g *10 + b; sum = e * 10000 + f * 1000 + c * 100 + b *10 + h; if(sum == sum0 + sum1) printf("%d\n",sum1); } } }

結果:1085