简单枚举 暴力啊
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
输入正整数 n , 按从大到小的顺序输出所有形如 abcde/fghij = n 的表达式,其中a ~ j为0 ~ 9的数字(不可重复)。2 <= n <=79. 样例输入: 62 样例输出: 79546/01283 = 62 94736/01528 = 62 、、、、、、、、、、、、、、、、、、、、 #include<iostream> #include<iomanip> using namespace std; int findstartvalue(int m)//求的第一个是m的倍数的5位数 { int m1=m*1234; int m2=(1234/m+1)*m;;//防止m很小 return m1>m2? m1:m2; } bool check(int m0,char flag[10]) { for(int k=0;k<5;k++)//不可以用while(m0>0)因为这样如果除数中有0就测不出来了 { if((++flag[m0])>1) return false; m0/=10; } return true; } void foo(int m) { int m0=findstartvalue(m); for(;m0<98766;m0+=m)//m0的最大数是98765 { char flag[10]={0}; if(check(m0,flag)==false)continue;//检查被除数 if(check(m0/m,flag)==false)continue;//检查除数 cout<<m0<<'/'<<setw(5)<<setfill('0')<<m0/m<<'='<<m<<endl; } } int main() { int m; while(scanf("%d",&m)==1) { foo(m); cout<<endl; } return 0; }