找到一个只含有0和1的数可以整除 n
方法:每次搜索 *10 和 *10 + 1即可
代码:
// zyc 2018/8/21
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 7;
int n; bool flag = false;
// 每次搜索 *10 和 *10 + 1
void dfs (unsigned long long now, int k)
{
if (k == 19) return ;
if (flag) return ;
if (now % n == 0) {
flag = true;
printf ("%I64d\n", now);
return ;
}
dfs (now * 10, k + 1);
dfs (now * 10 + 1, k + 1);
}
int main ()
{
while (scanf ("%d", &n) && n != 0) {
flag = false;
dfs (1, 0);
}
}