C入门必做的题,很难呀,帮帮忙
第一题:
题目:
1. 给定等式 A B C D E 其中每个字母代表一个数字,且不同数字对应不
D F G 同字母。编程求出这些数字并且打出这个数字的
+ D F G 算术计算竖式。
───────
X Y Z D E
[解决办法]
哎。。我做的程序很差,要半小时才能运算完,不够位数小点很快得出;
#include <stdio.h>
void main()
{
register int a,b,c,d,e,f,g,x,y,z;
register int j,k,l,p,o,h,m,n;
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 <=0;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++)
{
j=e+g+g;
m=j/10;
k=d+f+f+m;
n=k/10;
l=c+d+d+n;
o=l/10;
p=b+o;
h=p/10;
if(e==j%10&&d==k%10&&z==l%10&&y==p%10&&x==a+h&&a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=x&&a!=y&&a!=z&&b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=x&&b!=y&&b!=z&&c!=d&&c!=e&&c!=f&&c!=g&&c!=x&&c!=y&&c!=z&&d!=e&&d!=f&&d!=g&&d!=x&&d!=y&&d!=z&&e!=f&&e!=g&&e!=x&&e!=y&&e!=z&&f!=g&&f!=x&&f!=y&&f!=z&&g!=x&&g!=y&&g!=z&&x!=y&&x!=z&&y!=z)
{
printf( "%d %d %d %d\n ",a,b,c,d);
}
}
}
}
}
}
}
}
}
}
}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
[解决办法]
/*
请保留以下信息
作者:shaoshaoh
网址:http://blog.csdn.net/shaoshaoh
1. 给定等式 A B C D E 其中每个字母代表一个数字,且不同数字对应不
D F G 同字母。编程求出这些数字并且打出这个数字的
+ D F G 算术计算竖式。
───────
X Y Z D E
*/
#include "stdio.h "
int num[13]; /*分别代表A,B,C,D,E,D,F,G,X,Y,Z,D,E*/
long i,j;
long result;
void seperate(int* nums, long abcde, long dfg, long xyzde);
int check(void);
int main(void){
for (i=0;i <10;i++) num[i]=0;
for (i=10234; i <98561; i++)
for(j=102; j <987; j++)
{
seperate(num,i,j,i+j*2);
if ( check() ) goto out;
}
out:
printf( "The ABCDE is:%d%d%d%d%d ",num[0],num[1],num[2],num[3],num[4]);
printf( "The DFG is:%d%d%d ",num[5],num[6],num[7]);
printf( "The XYZDE is:%d%d%d%d%d ",num[8],num[9],num[10],num[11],num[12]);
}
void seperate(int* nums, long abcde, long dfg, long xyzde)
{
nums[4]=abcde % 10;
nums[3]=(abcde - nums[4]) % 100 / 10;
nums[2]=(abcde - abcde %100)% 1000 / 100;
nums[1]=(abcde - abcde % 1000)% 10000/ 1000;
nums[0]=(abcde - abcde % 10000) / 10000;
nums[7]=dfg % 10;
nums[6]=(dfg - nums[7])%100 /10;
nums[5]=(dfg-dfg%100)/100;
nums[12]=xyzde % 10;
nums[11]=(xyzde - nums[4]) % 100 / 10;
nums[10]=(xyzde - xyzde %100)% 1000 / 100;
nums[9]=(xyzde - xyzde % 1000)% 10000/ 1000;
nums[8]=(xyzde - xyzde % 10000) / 10000;
}
int check(void)
{
int i,j,temp[10];
if (num[0] == num[8]) return 0;
if (num[1] == num[9]) return 0;
if (num[2] == num[10]) return 0;
if (num[3] != num[11] || num[3] != num[5]) return 0;
if (num[4] != num[12]) return 0;
temp[0]=num[0];
temp[1]=num[1];
temp[2]=num[2];
temp[3]=num[3];
temp[4]=num[4];
temp[5]=num[6];
temp[6]=num[7];
temp[7]=num[8];
temp[8]=num[9];
temp[9]=num[10];
for (i =0; i <10; i++)
for(j=i+1; j <10; j++)
if (temp[i] == temp[j]) return 0;
return 1;
}
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1219891