2015年藍橋杯C/C++組B組第三題:三羊獻瑞
阿新 • • 發佈:2019-02-03
三羊獻瑞
觀察下面的加法算式:
祥 瑞 生 輝
+ 三 羊 獻 瑞
三 羊 生 瑞 氣
(如果有對齊問題,可以參看【圖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