当前位置: 代码迷 >> 综合 >> 求倍数//POJ - 1426//bfs/dfs
  详细解决方案

求倍数//POJ - 1426//bfs/dfs

热度:29   发布时间:2024-01-10 06:55:47.0

求倍数//POJ - 1426//bfs/dfs


题目

给定一个正整数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

链接:https://vjudge.net/contest/347799#problem/F

思路

利用队列暴力搜索所有1和0组成的数。

代码

#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include <queue>
using namespace std;int main()
{
    long long n,m;queue<long long> q;while(1){
    cin>>n;if(n==0) break;q=queue<long long>(); //队列清零long long p=1;q.push(1);while(q.size())         //不断验证即可{
    q.push(p*10);     //每一次×10和×10+1塞进队列q.push(p*10+1);p=q.front();q.pop();if(p%n==0) break;}cout<<p<<endl;}return 0;
}

注意

每个数都×10和×10+1即可遍历所有1和0组成的数