题意:寻找一个数,能除开所给的n,且这个数是由1或0组成的。则从1开始判断,每次是*10+1或*10则判断。
考虑到用DFS,但是n<=200,则完全可以用long long 存下。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
#include<iostream>
using namespace std;
long long n;
int s;
bool f=false;
void dfs(long long k,int step)
{
if(f)
return ;
if(step>=s)//只需向外拓展一次
return ;
if(k%n==0)
{
f=true;
cout<<k<<endl;
return ;
}
dfs(k*10,step+1);
dfs(k*10+1,step+1);
}
int main()
{
while(cin>>n&&n)
{
f=false;
for(s=1;;s++)
{
if(f)
break;
dfs(1,0);
}
}
return 0;
}