题目链接:
[kuangbin带你飞]专题一 简单搜索 E - Find The Multiple
题目大意:
给一个数n,让你找出一个只有1,0,组成的十进制数,要求是找到的数可以被n整除。
解题思路:
最高位为1, 接下来每一位不是0就是1,双入口bfs
代码如下:
#include<iostream>
#include<stdio.h>
using namespace std;
struct queue{
long long x;
};
queue q[20000000];
void bfs(int n)
{
int front, rear;
q[front = rear = 0].x = 1;
rear++;
while(front < rear)
{
if(q[front].x % n != 0)
{
q[rear++].x = q[front].x * 10;
q[rear++].x = q[front].x * 10 + 1;
}
else
{
printf("%lld\n", q[front].x);
return;
}
front+=1;
}
}
int main()
{
while(1)
{
int n;
scanf("%d", &n);
if(0 == n) break;
bfs(n);
}
return 0;
}