zoukankan      html  css  js  c++  java
  • POJ1426——BFS——Find The Multiple

    Description

    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

    Source

    大意:输入一个数,要求输出一个数满足是这个数的倍数,而且只由1和0构成,BFS用c++交超时,g++过了 (*@ο@*)
    #include<cstdio>
    #include<cstring>
    #include<queue>
    using namespace std;
    queue <long long> q;
    int n;
    long long  bfs()
    {
        while(!q.empty())
        q.pop();
        q.push(1);
        while(!q.empty()){
        long long p = q.front();
          q.pop();
          if(p%n == 0) return p;
          q.push(p*10);
          q.push(p*10+1);
        }
    }
    int main()
    {
        while(~scanf("%d",&n)&&n){
                printf("%lld
    ",bfs());
        }
        return 0;
    }
    View Code
     
  • 相关阅读:
    Project项目视图
    Console(控制台视图)
    Layout布局列表
    Layers层列表
    帐户下拉
    TransformGizmo(变换)切换
    Play播放控件
    变换工具
    工具栏
    Help帮助
  • 原文地址:https://www.cnblogs.com/zero-begin/p/4356097.html
Copyright © 2011-2022 走看看