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
题意:输入一个数,要求输出一个数满足是这个数的倍数,而且只由1和0构成。
分析:BFS用c++交超时,g++过了
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <queue> 5 using namespace std; 6 int n; 7 queue<long long> q; 8 long long bfs() 9 { 10 while(!q.empty()) 11 { 12 q.pop(); 13 } 14 q.push(1); 15 while(!q.empty()) 16 { 17 long long now=q.front(); 18 q.pop(); 19 if(now%n==0) 20 return now; 21 q.push(now*10); 22 q.push(now*10+1); 23 } 24 } 25 int main() 26 { 27 while(~scanf("%d",&n)&&n) 28 { 29 long long ans=bfs(); 30 printf("%lld\n",ans); 31 } 32 return 0; 33 }