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和0组成的能被整除的数字,不一定是样例数据。
题目说不会超过100位但其实无符号的longlong可以过。
#include <iostream>
#include <algorithm>
using namespace std;
typedef unsigned long long LL;
LL ans;
bool got;
void dfs(LL n, int digi, int k ){
if(digi > 20 || got ) return;
if( n % k == 0) { ans = n; got = true; return;}
dfs(n*10, digi+1, k);
dfs(n*10+1, digi+1, k);
}
int main() {
int n;
while (cin >> n && n != 0) {
got = false;
dfs(1, 0, n);
cout << ans <<endl;
}
}