POJ1426 Find The Multiple(BFS)

题目点我点我点我


题目大意: 对于一个整数,问大于等于这个整数的一个整数能够被其整除的整数,且这个整数只能包括0和1。

思路:DFS和BFS都行,我直接BFS暴搜,两个接口:乘10和乘10加1。第一发C++TLE了,然后G++AC了……


#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
#define inf 0x3f3f3f3f

long long bfs(int n)
{
    queue<long long>q;
    q.push(1);
    while(1)
    {
        long long ans=q.front();
        q.pop();
        if(ans%n==0)return ans;
        q.push(ans*10);
        q.push(ans*10+1);
    }
}

int main()
{
    int n;
    while(~scanf("%d",&n),n)
    {
        cout<<bfs(n)<<endl;
    }
    return 0;
}


你可能感兴趣的:(POJ1426 Find The Multiple(BFS))