题目大意:给定一个数,求该数的一个倍数,该倍数满足十进制表示时只包括0和1.
使用宽度优先搜索,使用的暴力搜索,使用queue会超时,自己实现一个简易队列就行。
#include <iostream>
using namespace std;
long long bfs(int x){
long long store[1000000];
int start = 0,rear = 1;
store[start] = 1;
while(1){
long long temp = store[start];
long long temp1 = temp*10;
long long temp2 = temp1 + 1;
if(temp1 % x == 0)
return temp1;
if(temp2 % x ==0)
return temp2;
start++;
store[rear] = temp1;
rear++;
store[rear] = temp2;
rear++;
}
}
int main(){
int n;
while(cin>>n && n){
cout<<bfs(n)<<endl;
}
return 0;
}