正文

程序整理 —第2题2006-11-30 13:37:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/zean/21089.html

分享到:

1.  给定等式  A B C D E     其中每个字母代表一个数字,且不同数字对应不                    D F G     同字母。编程求出这些数字并且打出这个数字的             +      D F G     算术计算竖式。              ───────                 X Y Z D E                                       main (){ int A,B,C,D,E,F,G,X,Y,Z;        if (A!=B&&!A!=C&&A!=D&&A!=E&&A!=F&&A!=G&&A!=X&&A!=Y&&A!=Z)     if (B!=C&&B!=D&&B!=E&&B!=F&&B!=G&&B!=X&&B!=Y&&B!=Z)     if (C!=D&&C!=E&&C!=F&&C!=G&&C!=X&&C!=Y&&C!=Z)     if (D!=E&&D!=F&&D!=G&&D!=X&&D!=Y&&D!=Z)     if (E!=F&&E!=G&&E!=X&&E!=Y&&E!=Z)     if (F!=G&&F!=X&&F!=Y&&F!=Z)     if (G!=X&&G!=Y&&G!=Z)     if (X!=Y&&X!=Z)     if (Y!=Z)            E==E+G+G;                  D==D+F+F;                  Z==C+D+D;                  Y==B+1;                  X==A+1;      printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",A,B,C,D,E,F,G,X,Y,Z);}自己认为正确的方法main (){ int a,b,c,d,e,f,g,x,y,z;        if (a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=x&&a!=y&&a!=z)     if (b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=x&&b!=y&&b!=z)     if (c!=d&&c!=e&&c!=f&&c!=g&&c!=x&&c!=y&&c!=z)     if (d!=e&&d!=f&&d!=g&&d!=x&&d!=y&&d!=z)     if (e!=f&&e!=g&&e!=x&&e!=y&&e!=z)     if (f!=g&&f!=x&&f!=y&&f!=z)     if (g!=x&&g!=y&&g!=z)     if (x!=y&&x!=z)     if (y!=z)              e==e+g+g;              d==d+f+f;              z==c+d+d;              y==b+1;              x==a+1;              printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",a,b,c,d,e,f,g,x,y,z);}   /*1.  给定等式  A B C D E     其中每个字母代表一个数字,且不同数字对应不                    D F G     同字母。编程求出这些数字并且打出这个数字的             +      D F G     算术计算竖式。              ───────                 X Y Z D E                                              _______________________________________________________________________________*/main (){ int a,b,c,d,e,f,g,x,y,z; for (a=0;a<9;a++) for (b=0;b<9;b++) for (c=0;c<9;c++) for (d=0;d<9;d++) for (e=0;e<9;e++) for (f=0;f<9;f++) for (g=0;g<9;g++) for (x=0;x<9;x++) for (y=0;y<9;y++) for (z=0;z<9;z++) {        if (a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=x&&a!=y&&a!=z)     if (b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=x&&b!=y&&b!=z)     if (c!=d&&c!=e&&c!=f&&c!=g&&c!=x&&c!=y&&c!=z)     if (d!=e&&d!=f&&d!=g&&d!=x&&d!=y&&d!=z)     if (e!=f&&e!=g&&e!=x&&e!=y&&e!=z)     if (f!=g&&f!=x&&f!=y&&f!=z)     if (g!=x&&g!=y&&g!=z)     if (x!=y&&x!=z)     if (y!=z)              e==e+g+g;              d==d+f+f;              z==c+d+d;              y==b+1;              x==a+1;              printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",a,b,c,d,e,f,g,x,y,z);        printf("%d,%d,%d,%d,%d\n", a ,b ,c ,d ,e);                        printf("%d,%d,%d\n",d ,f ,g);                        printf("%d,%d,%d,+\n",d ,f ,g);                                printf("───────");         printf("%d,%d,%d,%d,%d\n",x ,y, z, d ,e);     } }正确答案:main(){    long int a,b,c,d,e,f,g,x,y,z;    for(a=1;a<=9;a++)    for(b=0;b<=9;b++)        {if(a==b)continue;              for(c=0;c<=9;c++)        {if(c==a||c==b)continue;         for(d=1;d<=9;d++)        {if(d==a||d==b||d==c)continue;         for(e=0;e<=9;e++)        {if(e==a||e==b||e==c||e==d)continue;         for(f=0;f<=9;f++)        {if(f==a||f==b||f==c||f==d||f==e)continue;         for(g=0;g<=9;g++)        {if(g==a||g==b||g==c||g==d||g==e||g==f)continue;         for(x=1;x<=9;x++)        {if(x==a||x==b||x==c||x==d||x==e||x==f||x==g)continue;         for(y=0;y<=9;y++)        {if(y==a||y==b||y==c||y==d||y==e||y==f||y==g||y==x)continue;         for(z=0;z<=9;z++)        {if(z==a||z==b||z==c||z==d||z==e||z==f||z==g||z==x||z==y)continue;         if (10000*a+1000*b+100*c+10*d+e+2*(100*d+10*f+g)==10000*x+1000*y+100*z+10*d+e)                  {printf("%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld\n\n",a,b,c,d,e,f,g,x,y,z);goto bh;}                                }        }        }        }        }        }        }        }        }     bh:printf("  %1ld%1ld%1ld%1ld%1ld\n",a,b,c,d,e);   printf("    %1ld%1ld%1ld\n",d,f,g);   printf("  + %1ld%1ld%1ld\n",d,f,g);   printf("-----------------\n");   printf("  %1ld%1ld%1ld%1ld%1ld\n",x,y,z,d,e);}____________________________________ 方法2: /*程序简单了,用到了随机函数的技巧,但运行时间比较长*/#include <stdlib.h> #include <stdio.h> main(){int p[10],i,j;    do    {for(i=0;i<10;i++)       {bh:p[i]=random(10);        for(j=0;j<i;j++)           if(p[i]==p[j])goto bh;       }     if(10000L*p[0]+1000*p[1]+100*p[2]+10*p[3]+p[4]+2*(100*p[3]+10*p[5]+p[6])==10000L*p[7]+1000*p[8]+100*p[9]+10*p[3]+p[4])                {for(i=0;i<10;i++)            printf("%4d",p[i]);         printf("\n\n");         goto bh1;        }    }    while(1);bh1:printf("  %1d%1d%1d%1d%1d\n",p[0],p[1],p[2],p[3],p[4]);    printf("    %1d%1d%1d\n",p[3],p[5],p[6]);    printf("  + %1d%1d%1d\n",p[3],p[5],p[6]);    printf("-----------------\n");    printf("  %1d%1d%1d%1d%1d\n",p[7],p[8],p[9],p[3],p[4]);}

阅读(2197) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册