大家晒一晒自己的代码啊
原题如下: 两位数乘三位数等于四位数并且这九个数都不重复 例如: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 */ }自己写的 感觉挺笨重的