poj 1426 DFS

Find The Multiple
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 12137   Accepted: 4993   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

给出一个数,求仅由0 和 1 组成的这个数的倍数;
View Code
 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 using namespace std;
 5 
 6 bool find;
 7 int t,k;
 8 
 9 void dfs(unsigned __int64 t,int n,int k)
10 {
11     if(find)
12         return;
13     if(t%n==0)
14     {
15         find=true;
16         printf("%I64u\n",t);
17         return;
18     }
19     if(k==19)
20         return ;
21     dfs(t*10,n,k+1);
22     dfs(t*10+1,n,k+1);
23 }
24 
25 
26 int main()
27 {
28     int n;
29     while(cin>>n,n)
30     {
31         find=false;
32         dfs(1,n,1);
33     }
34     return 0;
35 }
posted on 2012-07-25 15:43  Zee、  阅读(217)  评论(0编辑  收藏  举报