直接枚举1000到100000之间的a和b,满足b*n==a
#include <iostream>
#include <cstdio>
#include <memory.h>
using namespace std;
int n;
int main(){
scanf("%d",&n);
while (n)
{
int flag=0;
for (int i=1000;i<100000;++i)
{
bool vis[10]={0};
if(i<10000)vis[0]=1;//b小于10000时候前面要补0
int t=i,a=n*i,f=0;
if(a<10000)continue;//a必须大于5位小于6位
else if(a>=100000)break;
while (t)
{
int temp=t%10;
t/=10;
if(vis[temp]){
f=1;
break;
}
else vis[temp]=1;
}
if(f)continue;
t=a;
while (t)
{
int temp=t%10;
t/=10;
if(vis[temp]){
f=1;
break;
}else vis[temp]=1;
}
if(f)continue;
flag=1;
if(i<10000)
printf("%d / 0%d = %d\n",a,i,n);
else printf("%d / %d = %d\n",a,i,n);
}
if(!flag)printf("There are no solutions for %d.\n",n);
scanf("%d",&n);
if(n)printf("\n");
}
return 0;
}