kuangbin专题一 Find The Multiple(DFS)

找到一个只含有0和1的数可以整除 n 

方法:每次搜索 *10 和 *10 + 1即可

代码:

// zyc 2018/8/21

#include 
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);
    }
}

 

你可能感兴趣的:(DFS&&BFS,kuangbin,1)