POJ 1426 bfs Find The Multiple

给出任意n,找出是它的任意倍数的数m,要求m必须由0,,1组成

余数作为状态,初始状态是0,状态转移

num[end++]=num[now]*10;
 num[end++]=num[now]*10+1;
代码:
#include<iostream>
#include<cstdio>
using namespace std;
long long num[21000000]={0};//这里num为什么开这么大,还是不懂~
int main()
{
   int n,now,end;
   while(~scanf("%d",&n)&&n)
   {
       num[0]=1;
       now=0;
       end=1;
       while(1)
       {
           if(num[now]%n==0)
           {
               printf("%lld\n",num[now]);
               break;
           }
           num[end++]=num[now]*10;
           num[end++]=num[now]*10+1;
           now++;
       }
   }
   return 0;
}

  


posted @ 2012-03-01 00:07  快乐.  阅读(162)  评论(0编辑  收藏  举报