正文

程序整理 —第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]);
}

阅读(2067) | 评论(0)


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

评论

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