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]);
}
评论