Poj(1426),BFS

题目链接:http://poj.org/problem?id=1426

可能数据比较水,没有用到大整数。刚刚开始的时候,想从后往前加0或者1,发现有点难写,后来想到先放一个1,再1*10,1*10+1,这样也可以存遍历这种只有0和1的数,但是发现STL写队列会T,后来队列自己写,就A了。

#include <stdio.h>

long long Q[10000000];

int main()
{
    int n;
    while(scanf("%d",&n),n)
    {
        int front = 0;
        int rear = 0;

        Q[rear++] = 1;
        while(1)
        {
            long long tmp = Q[front++];
            if(tmp%n==0)
            {
                printf("%lld
",tmp);
                break;
            }
            Q[rear++]=tmp*10;
            Q[rear++]=tmp*10+1;
        }
    }
    return 0;
}
原文地址:https://www.cnblogs.com/TreeDream/p/5724992.html