Find The Multiple
Time Limit: 1000MS | Memory Limit: 10000K | |||
Total Submissions: 16505 | Accepted: 6732 | Special Judge |
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 #include <iostream> 2 #include <stdio.h> 3 #include <string.h> 4 #include <queue> 5 #include <algorithm> 6 using namespace std; 7 int a[1000000]; 8 void dfs(int x) 9 { 10 if(!x)return ; 11 dfs(x>>1); 12 printf("%d",x&1); 13 } 14 int main() 15 { 16 int n; 17 while(scanf("%d",&n)&&n) 18 { 19 int i; 20 a[1]=1; 21 for(i=2;a[i-1]!=0;i++) 22 a[i]=(a[i>>1]*10+(i&1))%n; 23 dfs(i-1); 24 printf(" "); 25 } 26 }