poj 1426 Find The Multiple
题意
给你一个数n,你要找出一个只由0和1组成的不超过100位的数,使得该数是n的m倍
思路
这是一道BFS题,入队的时候有两种情况:一种是10t;一种是10t+1;这题还有个坑点是用C++的STL的队列会T,所以需要自己写一个队列
题目链接
http://poj.org/problem?id=1426
代码
#include<iostream>
#include<queue>
using namespace std;
long long a[10000000];
long long bfs(int N) {
int front = 0;
int rear = 0;
a[rear++] = 1;
while (front != rear) {
long long tmp = a[front++];
if (tmp % N == 0) {
return tmp;
}
a[rear++] = tmp * 10;
a[rear++] = tmp * 10 + 1;
}
return -1;
}
int main() {
int N;
while (cin >> N) {
if (N == 0)break;
cout << bfs(N) << endl;
}
return 0;
}