http://poj.org/problem?id=1426
题目大意:
找出一个由0、1组成且是n的倍数的数
分析:
从基数t=1开始,每个数有两条路可走,要么t*10,要么t*10+1 ,直至找到第一个n的倍数
AC代码:
#include <stdio.h>
#include <queue>
using namespace std;
typedef long long ll;
ll n;
void bfs(){
queue<ll> S;
ll t=1;
S.push(t);
while(!S.empty()){
t=S.front();
S.pop();
//printf ("%lld\n",t);
if(t%n==0){
printf ("%lld\n",t);
break;
}
S.push(t*10);
S.push(t*10+1);
}
}
int main (){
while (scanf ("%lld",&n)&&n){
bfs();
}
return 0;
}