看下面的算式:
□□ x □□ = □□ x □□□
它表示:两个两位数相乘等于一个两位数乘以一个三位数。
如果没有限定条件,这样的例子很多。
但目前的限定是:这9个方块,表示1~9的9个数字,不包含0。
该算式中1至9的每个数字出现且只出现一次!
该算式中1至9的每个数字出现且只出现一次!
比如:
46 x 79 = 23 x 158
54 x 69 = 27 x 138
54 x 93 = 27 x 186
.....
46 x 79 = 23 x 158
54 x 69 = 27 x 138
54 x 93 = 27 x 186
.....
请编程,输出所有可能的情况!
注意:
左边的两个乘数交换算同一方案,不要重复输出!
不同方案的输出顺序不重要
左边的两个乘数交换算同一方案,不要重复输出!
不同方案的输出顺序不重要
解答:
#include "stdio.h"
int main()
{
int i,j,k,h,m,n,t,s,ii;
int f[10],d[4];
for(i=12;i<=87;i++)
{
for(j=67;j<=98;j++)
{
for(k=12;k<=79;k++)
{
for(h=123;h<=987;h++)
{
d[0]=i; d[1]=j;
d[2]=k; d[3]=h;
s=0;
if(d[0]*d[1]==d[2]*d[3]){
for(m=1;m<=9;m++)
f[m]=0;
for(t=0;t<4;t++)
{
while(d[t]>0)
{
n=d[t]%10;
f[n]++;
d[t]=d[t]/10;
}
}
for(ii=1;ii<=9;ii++)
{
if(f[ii]!=1) s=1;
}
if(s==0)
printf("%d*%d=%d*%d\n",i,j,k,h);
}
else continue;
}
}
}
}
return 0;
}
程序运行结果: