搜索专题
不错的题,生生地把bfs变成了模拟bfs。。。或者说递推。。。
朴素做法
可以用搜索直接做。
既然是搜索,那么就从 1 开始 接着就是 10 和 11 ,对吧。
既然是bfs,那么就有一个搜索树。
这样地,
额,水印好丑。
然后就这样一层层往下搜,直到 x mod n == 0
同余解决
虽然似乎数据很水,不用同余亦可
根据题目描述,n≤200,是一个大数,需要用高精度,然而网上提供了一个很好的数学方法,就是在每个解之后mod n。
这里有链接
同余是什么
(a×b) mod p = ((a%p)×(b%p)) mod p
这样就可以了
source;
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define rg register
#define inf 0x3f3f3f3f
using namespace std;
int f[524286],n;
int main(){
while(1)
{
scanf("%d",&n);
if(n==0) break;
f[1]=1;
int i;
for(i=2;f[i-1]!=0;i++)
f[i]=(f[i/2]*10+i%2)%n;
i--;
int p=0;
while(i)
{
f[p++]=i%2;
i/=2;
}
while(p)
printf("%d",f[--p]);
printf("\n");
}
return 0;
}