DFS之一
//poj 1426 Find The Multiple
#include<iostream> //求1个10进制数,只能由1或0组成,能整除n
using namespace std;
int n,flag;
int num[200]={1};
int mod(int len)
{
int s=0;
for(int i=0;i<=len;++i)
{
s=s*10+num[i];
if(s>=n)
s%=n;
}
return s;
}
void dfs(int len)
{
if(len>99)
return;
num[len]=1;
if(mod(len)==0)
{
for(int i=0;i<=len;++i)
printf("%d",num[i]);
printf("\n");
flag=1;
return;
}
num[len]=0;
if(mod(len)==0)
{
for(int i=0;i<=len;++i)
printf("%d",num[i]);
printf("\n");
flag=1;
return;
}
num[len]=1;
dfs(len+1);
if(flag==1)
return;
num[len]=0;
dfs(len+1);
}
int main()
{
while(cin>>n&&n)
{
flag=0;
dfs(1);
}
return 0;
}