美文网首页
[kuangbin带你飞]专题一 简单搜索 E

[kuangbin带你飞]专题一 简单搜索 E

作者: jenye_ | 来源:发表于2018-06-14 10:17 被阅读0次

    E - Find The Multiple

    POJ - 1426

    Given a positive integer n, write a program to find out a nonzero multiple m of n whose decimal representation contains only the digits 0 and 1. You may assume that n is not greater than 200 and there is a corresponding m containing no more than 100 decimal digits.
    Input
    The input file may contain multiple test cases. Each line contains a value of n (1 <= n <= 200). A line containing a zero terminates the input.
    Output
    For each value of n in the input print a line containing the corresponding value of m. The decimal representation of m must not contain more than 100 digits. If there are multiple solutions for a given value of n, any one of them is acceptable.
    Sample Input
    2
    6
    19
    0
    Sample Output
    10
    100100100100100100
    111111111111111111


    开始考虑到找到就可以,想用bfs直接搜索,找到可以直接break,但是超时了。改用了dfs就A了,用dfs注意一下边界条件,unsigned long long可以保存20位十进制。


    #include<cstdio>
    #include<iostream>
    using namespace std;
    typedef unsigned long long ull;
    int n;
    bool founded;
    void dfs(ull m,int depth){
        if(founded){
            return;
        } 
        if(m%n==0){
            cout<<m<<endl;
            founded = true;
            return;
        }
    // 边界情况
        if(depth=19){
            return;
        }
        dfs(m*10,depth+1);
        dfs(m*10+1,depth+1);
    }
    int main(){
        while(cin>>n&&n!=0){
            founded = false;
            dfs(1,0);
        }
        return 0;
    }
    
    

    相关文章

      网友评论

          本文标题:[kuangbin带你飞]专题一 简单搜索 E

          本文链接:https://www.haomeiwen.com/subject/vpveeftx.html