F - BFS/DFS POJ - 1426

F - BFS/DFS

POJ - 1426

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

Input

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

Output

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

Sample Input

2
6
19
0

Sample Output

10
100100100100100100
111111111111111111

题目描述:

扫描二维码关注公众号,回复: 8564606 查看本文章

求出任何一个只包含0和1的十进制数,这个数要是给定n的倍数。

分析:

给出的n在200内,答案可以用long long 装下。是bfs的暴搜题。

(注意每次用q=queue<long long>()清空队列。)

只要从1开始,在1后面依次加1或0,每个数都取模n,一直到找到答案即可。

代码:

#include<iostream>
#include<queue>
using namespace std;
typedef long long ll;
int main()
{
    int n;
    queue<ll> q;
    while(1)
    {
        cin>>n;
        if(n==0) break;
        q=queue<ll>();
        ll p=1;
        while(p%n!=0)
        {
            q.push(p*10);
            q.push(p*10+1);
            p=q.front();
            q.pop(); 
        }
        cout<<p<<'\n';
    }
    return 0;
}

 

猜你喜欢

转载自www.cnblogs.com/studyshare777/p/12186330.html
今日推荐