POJ1426 Find The Multiple

题目:

给定一个正整数n,请编写一个程序来寻找n的一个非零的倍数m,这个m应当在十进制表示时每一位上只包含0或者1。你可以假定n不大于200且m不多于100位。 
提示:本题采用Special Judge,你无需输出所有符合条件的m,你只需要输出任一符合条件的m即可。

输入:

输入包含多组数据,每组数据仅一行,只包含一个正整数n (1 <= n <= 200).

输出:

对于输入的每组n,都输出任一符合条件的m。即使有多个符合条件的m,你也只需要输出一个即可。

样例:

分析:unsigned long long 暴力DFS就完事了(ノ>ω<)ノ

ac代码如下

#include<iostream>
#include<sstream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<functional>
#include<iomanip>
#include<numeric>
#include<cmath>
#include<queue>
#include<vector>
#include<set>
#include<cctype>
#define PI acos(-1.0)
const int INF = 0x3f3f3f3f;
const int NINF = -INF - 1;
typedef long long ll;
using namespace std;
int n;
int dfs(unsigned long long x, int t)
{
    if (t > 19) return 0;
    if (x % n == 0)
    {
        cout << x << endl;
        return 1;
    }
    if (dfs(x * 10, t + 1)) return 1;
    if (dfs(x * 10 + 1, t + 1)) return 1;
    return 0;
}
int main()
{
    while (cin >> n)
    {
        if (n == 0) break;
        dfs(1, 0);
    }
    return 0;
}

 

posted @ 2019-06-04 11:00  Veasky  阅读(744)  评论(1编辑  收藏  举报