Description
Given a positive integer n, write a program to find out a nonzero multiple m of n whose decimal representation contains only the digits 0 and 1. You may assume that n is not greater than 200 and there is a corresponding m containing no more than 100 decimal digits.
Input
The input file may contain multiple test cases. Each line contains a value of n (1 <= n <= 200). A line containing a zero terminates the input.
Output
For each value of n in the input print a line containing the corresponding value of m. The decimal representation of m must not contain more than 100 digits. If there are multiple solutions for a given value of n, any one of them is acceptable.
Sample Input
2
6
19
0
Sample Output
10
100100100100100100
111111111111111111
题目含义:给你一个数n,让你找到n的非零倍数m,并且m是由1和0构成的。
题目思路:这个题目是Special Judge,并且只要满足是n的非0倍数就可以,题意中说了any one of them is acceptable.
所以利用bfs搜索思路来,搜索他们的倍数,既然结果由1和0组成,我们可以从1开始让它按10倍,10倍加1的这个搜索方向来搜索,这样一直找,直到满足m%n == 0
AC代码:
#include<iostream>
#include<queue>
#include<cstdio>
using namespace std;
typedef long long ll;
ll r;
void bfs(int n)
{
queue<ll>q;
q.push(1);
while(!q.empty())
{
r = q.front();
q.pop();
if(r%n == 0)
return;
q.push(r*10);
q.push(r*10+1);
}
}
int main()
{
int n;
while(~scanf("%d",&n) && n)
{
bfs(n);
printf("%lld\n",r);
}
return 0;
}