先确定被除数,然后用被除数/n得到除数,再用set判断是否有10个不同数
代码:
#include<iostream>
#include<algorithm>
#include<set>
using namespace std;
bool pan(int i,int x) //用set判断是否有十个不同的数
{
set<int> s;
if(x<10000) s.insert(0); //注意除数可能为0开头
while(i){
s.insert(i%10);
i/=10;
}
while(x){
s.insert(x%10);
x/=10;
}
if(s.size()==10) return 1;
else return 0;
}
int main()
{
int n,num=0;
while(cin>>n && n)
{
if(num) cout<<endl; //奇怪的格式,格式错误好多次
num++;
int flag=0;
for(int i=12345;i<=98765;i++)
{
if(i%n) continue; //不能整除,跳过当前循环
int x=i/n;
if(pan(i,x))
{
flag=1; //标记
printf("%05d / %05d = %d\n",i,x,n); //格式输出
}
}
if(!flag) printf("There are no solutions for %d.\n",n);
}
return 0;
}