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 }