1. 程式人生 > >poj 1426 Find The Multiple

poj 1426 Find The Multiple

lines code span cti its case sig pac unsigned

id=1426">poj 1426 的傳送門

Language:
Find The Multiple
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 21735 Accepted: 8939 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 的數,比方說
input :3;
output : 111;
可能有多個答案。僅僅須要輸出一個就可以;
解題思路:用dfs搜索。僅僅搜關於0和1 的數,詳情見代碼。,,,

上代碼:

#include <iostream>

using namespace std;
bool fo;
void dfs(unsigned long long t, int k, int m)//unsigned一定要有,這是一個無符號字符類型,
{ if(fo)//一定要有這句話,要不然會有非常多個答案的。 return ; if(t % m == 0) { cout<<t<<endl; fo=1;//標記 return; } if(k == 19)//long long 最多有19位, return; dfs(t*10, k+1, m);//搜*10的 dfs(t*10+1, k+1, m);//搜*10+1的 } int main() { int m; while(cin>>m,m) { fo=0; dfs(1, 0, m); } return 0; }

poj 1426 Find The Multiple