给定一个正整数n,编写一个程序,找出n的非零倍数m,其十进制表示仅包含数字0和1。您可以假设n不大于200,并且有一个对应的m,包含不超过100个十进制数字。

输入

输入文件可能包含多个测试用例。每行包含一个n值(1<=n<=200)。包含零的行终止输入。

输出

对于输入中的每一个n值,打印一行包含对应的m值。m的十进制表示不能包含超过100位数字。如果给定值n有多个解,其中任何一个都可以接受。

Sample Input
2
6
19
0
Sample Output
10
100100100100100100
111111111111111111

#include<stdio.h>
int n, f;
void dfs(int x, long long y)
{
    if(x >19 || f ==1)             //保证m的十进制表示不超过100位数字
    {
        return;
    }
    if(y%n == 0)           //当y整除n等于0时,表示y 既是n 的倍数,也满足了只含1,0的要求
    {
        f = 1;
        printf("%lld\n",y);
        return ;
    }   
    dfs(x+1, y*10);                    //y找只含1,0的数
    dfs(x+1, y*10+1);                //递归
}

int main(void)
{   
    while(~scanf("%d",&n), n)
    {
       f = 0;
       dfs(1, 1);
    }
    return 0;
}