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;
}

浙公网安备 33010602011771号