先附上题目链接
一道神奇的搜索题,代码很简单但思想比较有启发性.
只有1和0的话.只需要从1开始×10或者×10+1去构造101001…的数字串.
其实是第二次做这题.第一次就很不解为什么超过19位就不继续了.虽然现在知道
long long的最大值是十九位的.可是题目要求的是200位,故还是有点不解…
附上代码.
#include <iostream>
#include <queue>
#include <string.h>
#include <algorithm>
using namespace std;
const int INF = 0x3f3f3f3f;
typedef long long ll;
const int mn = 20;
ll n;
bool flag;
void dfs(int i,ll cur) {
if (flag) return;
if (i > 19) return;
if (cur % n == 0) {
cout << cur<<endl;
flag = 1;
return;
}
dfs(i + 1, cur * 10);
dfs(i + 1, cur * 10 + 1);
}
int main() {
while (cin >> n && n) {
flag = 0;
dfs(1,1);
}
return 0;
}