POJ - 1426 Find The Multiple (暴力搜索)

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
#include <cstdio>
#include <iostream>
#include <queue>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;

typedef unsigned long long ll;
const int inf=0x3f3f3f3f;
const int mod=1e9+7;
ll n,ans;

void bfs(ll x)
{
    queue<ll>q;
    q.push(x);
    while(q.size())
    {
        ll tmp=q.front();
        q.pop();
        if(tmp%n==0)
        {
            ans=tmp;
            return ;
        }
        ll xx=tmp*10;
        q.push(xx);
        if(xx%n==0)
        {
            ans=xx;
            return ;
        }
        xx=tmp*10+1;
        q.push(xx);
        if(xx%n==0)
        {
            ans=xx;
            return ;
        }
    }
}
int main()
{
    while(~scanf("%lld",&n)&&n)
    {
        bfs(1);
        cout<<ans<<'\n';
    }
    return 0;
}

 

全部评论

相关推荐

10-31 14:54
已编辑
门头沟学院 算法工程师
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务