POJ - 1426 Find The Multiple

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;
}
posted @ 2020-01-17 11:30  lifehappy  阅读(202)  评论(0编辑  收藏  举报