题目大意:
给定正整数n,编写程序找出非零值n的倍数m,并且m 的十进制数表示仅包含数字0和1。你可以假设n不大于200,且有不超过100位的相应m。
思路:
反向思考找出所有的0,1组成的数字,判断是否是n整数倍。
#include<stdio.h>
#include<iostream>
#include<queue>
using namespace std;
void BFS(int n){
queue<long long> q;
q.push(1);
while(!q.empty()){
long long x = q.front();
q.pop();
if(x % n == 0){
printf("%d\n", x);
return ;
}
q.push(x * 10 + 1);
q.push(x * 10);
}
}
int main(){
int n;
while(scanf("%d", &n) != EOF){
if(n == 0)
break;
BFS(n);
}
return 0;
}