poj 【1426】 Find The Multiple

Find The Multiple
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 25172   Accepted: 10363   Special Judge

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

Dhaka 2002

//看了网上的代码发现long long就可以过,但是不知道为什么
//不过用bfs测试了一下,对于题目给的要求确实能输出正确的解
//bfs一次往里面放入1,10,11,100,101,110,111......
#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
using namespace std;
typedef long long LL;

void bfs(int mod)
{
    queue <LL> que;
    while(!que.empty()) que.pop();
    que.push((LL)1);
    while(!que.empty())
    {
        LL temp = que.front();
        que.pop();
        if(temp % mod == 0)
        {
            printf("%I64d\n", temp);
            return ;
        }
        que.push(temp*10);
        que.push(temp*10+1);
    }
}

int main()
{
    int n;
    while(scanf("%d", &n) != EOF && n)
        bfs(n);
    return 0;
}

你可能感兴趣的:(poj 【1426】 Find The Multiple)