1. 程式人生 > >2015年第六屆藍橋杯C/C++程式設計本科B組省賽-三羊獻瑞

2015年第六屆藍橋杯C/C++程式設計本科B組省賽-三羊獻瑞

三羊獻瑞(結果填空)

 觀察下面的加法算式:
       祥 瑞生 輝
 +    三羊 獻 瑞
-------------------
 三 羊 生 瑞 氣
其中,相同的漢字代表相同的數字,不同的漢字代表不同的數字。
請你填寫“三羊獻瑞”所代表的4位數字(答案唯一),不要填寫任何多餘內容。
思路:迴圈遍歷每一個漢字代表的數字。
即可轉換為
        a b c d
+     e f  g b
-------------
   e  f  c  b h


答案為:1085

#include <stdio.h>
#include <stdlib.h>

int main()
{

    int a,b,c,d,e,f,g,h;
    int num1,num2,num3;
    //int sum=0;
    for(a=1; a<10; a++)
    {
        for(b=0; b<10; b++)
        {
            for(c=0; c<10; c++)
            {
                for(d=0; d<10; d++)
                {
                    for(e=1; e<10; e++)
                    {
                        for(f=0; f<10; f++)
                        {
                            for(g=0; g<10; g++)
                            {
                                if(a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g    &&b!=c&&b!=d&&b!=e&&b!=f&&b!=g   &&c!=d&&c!=e&&c!=f&&c!=g  &&d!=e&&d!=f&&d!=g  &&e!=f&&e!=g&&f!=g)
                                {//判斷a b c d e f g各不相等時要寫仔細,不要有遺漏
                                    num1=a*1000+b*100+c*10+d;
                                    num2=e*1000+f*100+g*10+b;
                                    num3=num1+num2;
                                    h=num3%10;
                                    if(h!=a&&h!=b&&h!=c&&h!=d&&h!=e&&h!=f&&h!=g)//h是通過計算得來的,h也不能與acdefg中的任何一個相同
                                    {

                                        if(num3/10000==e   &&(num3/1000)%10==f   &&(num3/100)%10==c  &&(num3/10)%10==b  &&num3%10==h)
                                        {

                                            //sum++;
                                           // printf("%d%d%d%d\n",a,b,c,d);
                                            printf("%d%d%d%d\n",e,f,g,b);
                                            //printf("%d%d%d%d%d\n",e,f,c,b,h);
                                            //printf("****************\n");
                                        }
                                    }

                                }

                            }
                        }
                    }
                }
            }
        }
    }
    //printf("%d",sum);
    return 0;
}