本文主要是介绍POJ 1426 Find The Multiple 【BFS】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:http://poj.org/problem?id=1426
题意:给你一个n,让你找一个可以整除n的数,这个数只有0和1构成
解析:由于这个数很特殊,所以可以构造出来,用bfs从1开始,每步只能x*10或者x*10+1
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
using namespace std;
typedef long long ll;
const int maxn = 1e6+100;
int n;
long long bfs()
{queue<long long>q;q.push(1LL);while(!q.empty()){long long now = q.front();q.pop();if(now%n==0)return now;q.push(now*10LL);q.push(now*10LL+1LL);}return 0;
}
int main()
{while(~scanf("%d",&n)&&n)printf("%I64d\n",bfs());return 0;
}
这篇关于POJ 1426 Find The Multiple 【BFS】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!