2015年蓝桥杯省赛B组第3题--三羊献瑞

    xiaoxiao2021-03-25  59

    三羊献瑞 观察下面的加法算式:       祥 瑞 生 辉   +   三 羊 献 瑞 -------------------    三 羊 生 瑞 气 (如果有对齐问题,可以参看【图1.jpg】) 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。 请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。

    #include<stdio.h> #include<string.h> #include<ctype.h> #include<math.h> int a[10],b[10],c[10]; void aa(int n) { int i=0; while(n>0){ a[i++]=n; n/=10; } } void bb(int n) { int i=0; while(n>0){ b[i++]=n; n/=10; } } int cc(int n) { int i=0; while(n>0){ c[i++]=n; n/=10; } if(i!=5) return 0; else return 1; } int a1() { int i,j; for(i=0;i<4;i++){ for(j=0;j<5;j++){ if(i!=j&&j<4&&a[i]==a[j]) return 0; if(i!=2||j!=0){ if(j<4&&a[i]==b[j]) return 0; } if(i==0||i==3){ if(j!=1&&j!=2){ if(a[i]==c[j]) return 0; } } } } return 1; } int bb() { int i,j; for(i=0;i<4;i++){ for(j=0;j<5;j++){ if(j>i&&j<4&&b[i]==b[j]) return 0; if(i==1&&b[i]==c[j]) return 0; } } return 1; } int c1() { int i,j; for(i=0;i<5;i++){ for(j=i+1;j<5;j++){ if(c[i]==c[j]) return 0; } } } int main () { int i,j; for(i=1000;i<=9999;i++){ for(j=1000;j<=9999;j++){ memset(c,0,sizeof(c)); if(cc(i+j)){ memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); aa(i); bb(j); if(b[3]==c[4]&&b[2]==c[3]&&a[1]==c[2]&&a[2]==c[1]&&b[0]==a[2]&&a1()&&bb()&&c1()){ printf(" %d\n",i); printf("+%d\n",j); printf("-----------\n"); printf("%d\n\n",i+j); } }else{ } } } return 0; } 最后答案为:1085

    代码运行结果如下:

    转载请注明原文地址: https://ju.6miu.com/read-38423.html

    最新回复(0)