欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

POJ-1426 Find The Multiple

程序员文章站 2022-06-12 09:15:09
...

POJ-1426 Find The Multiple

题目链接:POJ-1426
POJ-1426 Find The Multiple
题目大意:找到一个数 这个数只由1或0组成 且是给定数的整倍数

解题思路:只由1或者0组成 那么就从1为起点 每次乘10 或者乘10+1 就能覆盖到所有的数 BFS搜索即可 注意示例给定的不是最小解 不要被误导

代码块:

#include<iostream>
#include<queue>

using namespace std;

typedef long long ll;
ll n;
ll res = 1;
void bfs(ll x);
int main(){
    while(cin>>n){
        if(n == 0)return 0;
        if(n != 1)bfs(n);
        cout<<res<<endl;
        res = 1;
    }
    return 0;
}
void bfs(ll x){
    queue<ll> queueA;
    queueA.push(1);
    while(queueA.size()){
        ll nowValue = queueA.front();
        if(nowValue % x == 0){
            res = nowValue;
            return;
        }
        else{
            queueA.push(nowValue * 10);
            queueA.push(nowValue * 10 + 1);
        }
        queueA.pop();
    }
}