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