藍橋杯 三羊獻瑞
阿新 • • 發佈:2019-02-06
題目:
三羊獻瑞
觀察下面的加法算式:
祥 瑞 生 輝
+ 三 羊 獻 瑞
-------------------
三 羊 生 瑞 氣
其中,相同的漢字代表相同的數字,不同的漢字代表不同的數字。
請你填寫“三羊獻瑞”所代表的4位數字(答案唯一),不要填寫任何多餘內容。
程式碼:
#include <iostream> #include<stdio.h> using namespace std; int main(int argc, char *argv[]) { int a,b,c,d,e,f,g,h;//分別代表:祥,瑞,生,輝,三,羊,獻,氣 int sum1=0,sum2=0,sum=0;//分表代表: 祥 瑞 生 輝,三 羊 獻 瑞, 三 羊 生 瑞 氣 for(a=1;a<=9;a++)//從1開始,因為數字首位不能為0 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開始,因為數字首位不能為0 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) { sum1=a*1000 + b*100 + c*10 + d; sum2=e*1000 + f*100 + g*10 + b; sum = e*10000 + f*1000 + c*100 + b*10 + h; if(sum1+sum2 == sum) { printf("%d%d%d%d",e,f,g,b); } } } cout<<endl; return 0; }
程式碼:
#include <cstdio> #include <algorithm> using namespace std; int main() { int a[10]; for (int i = 0; i < 10; i++) a[i] = i; do { if (!a[2] || !a[6]) continue; int x = a[2]*1000 + a[3]*100 + a[4]*10 + a[5]; int y = a[6]*1000 + a[7]*100 + a[8]*10 + a[3]; int z = a[6]*10000 + a[7]*1000 + a[4]*100 + a[3]*10 + a[9]; if (x + y == z) printf("%d + %d = %d\n", x, y, z); } while (next_permutation(a, a+10)); return 0; }