大家晒一晒自己的代码啊
原题如下: 两位数乘三位数等于四位数并且这九个数都不重复 例如:12*483=5796
程序代码:#include <stdio.h>
int main()
{
int num[]={0,0,0,0,0,0,0,0,0,0};
int m,n;
bool flag;
int i,j,k,f;
int mul=0;
int a,b,c,d;
for(m=1;m<=9;m++) //2位数中的十位
for(n=1;n<=9;n++) //2位数中的个位
for(i=1;i<=9;i++) //3位数中的百位
for(j=1;j<=9;j++) //3位数中的十位
for(k=1;k<=9;k++) //3位数中的个位
{
for(f=0;f<10;f++) num[f]=0; //数组清零 用于判断是否重复
flag=true;
mul=(m*10+n)*(100*i+10*j+k);
if(mul<1000 || mul>9999) break;
a=mul%10;
b=(mul/10)%10;
c=(mul/100)%10;
d=(mul/1000)%10;
if(a==0 || b==0 || c==0 || d==0) break; //去除乘积中的0
num[i]++;
num[j]++;
num[k]++;
num[a]++;
num[b]++;
num[c]++;
num[d]++;
num[m]++;
num[n]++;
for(f=0;f<10;f++)
{
if(num[f]>1)
{
flag=false; //如果有重复的 则pass掉
break;
}
}
if(flag==true) printf("%d*%d=%d\n",m*10+n,i*100+j*10+k,mul);
}
return 0;
/*
答案应该有2组
12*483=5796
27*198=5346
*/
} 自己写的 感觉挺笨重的
