题目链接:​​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;
}