给定一个正整数n,编写一个程序来找出n的非零倍数m,它的十进制表示只包含数字0和1。您可以假设n不大于200,并且对应的m不包含100小数位数。
输入
输入文件可能包含多个测试用例。每一行包含一个值n(1<=n<=200)。包含零的行结束输入。
输出量
对于输入中的每个值n,打印一行,其中包含对应的m值。m的十进制表示不能包含超过100位数字。如果给定值n有多个解,则其中任何一个都是可接受的。
样本输入
2
6
19
0
样本输出
10
100100100100100100
111111111111111111
#include<cstdio>
#include<queue>
#include<iostream>
using namespace std;
typedef unsigned long long ull;
int main(){
int n;
ull a;
while(scanf("%d",&n)!=EOF&&n){
queue<ull>M;
M.push(1);
while(!M.empty())
{
a=M.front();
M.pop();
if(a%n==0)
break;
ull b=a*10;
M.push(b);
b++;
M.push(b);
}
printf("%lld\n",a);
}
return 0;
}