Find The Multiple (poj1426 一个好的做法)

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 }
View Code
原文地址:https://www.cnblogs.com/ERKE/p/3602584.html