知识点:深搜
这个题的数据比较小,让你求1到200的倍数,那么可以尝试打表,先把1到200都求出一个答案记录下来,然后尝试,不超过20层就能都找到答案,所以不需要高精度什么的,但是我觉得这个题有点迭代加深的思想,因为有的时候的分支就躲过了较短的层数,但是还没有学这个搜索技巧,所以先不考虑
#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
const int N = 205;
int flag, num, ind;
ull a[N];
void dfs(ull x, int level) {
if (flag || level == 20) return;
if (x >= num) {
if (x % num == 0) {
flag = 1;
a[ind] = x;
return;
}
}
dfs(x * 10 + 1, level + 1);
dfs(x * 10, level + 1);
}
int main() {
for (int i = 1; i <= 200; i++) {
flag = 0;
num = ind = i;
dfs(0, 0);
}
int n;
while (cin >> n && n) {
cout << a[n] << '\n';
}
return 0;
}