输入正整数 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;
}