找到一个只含有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);
}
}
寻找能被n整除的01数

本文介绍了一种通过递归搜索的方法来找到一个仅由0和1组成的数字,该数字能够被给定的整数n整除。算法通过不断尝试将当前数乘以10或乘以10后再加1来生成新的数,直到找到符合条件的数为止。

被折叠的 条评论
为什么被折叠?



