POJ - 1426 链接
本来想这道题要用大数来进行模拟的,后来不小心瞄到了评论,unsigned long long 吧
这是一道dfs回溯问题不断地枚举每位是 0 还是 1 但是位数不能超过unsigned long long 的限定
开始dfs回溯代码吧
//POwered by CK
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef unsigned long long ULL;
int n, flag;
void dfs(ULL ans, int pos) {
if(pos > 19 || flag) return;
if(ans % n == 0) {
cout << ans << endl;
flag = 1;
return;
}
dfs(ans * 10 + 1, pos + 1);
dfs(ans * 10, pos + 1);
}
int main() {
while(cin >> n && n) {
flag = 0;
dfs(1, 0);
}
return 0;
}