
P1602 Sramoc问题
$bfs$搜索
保证第一个搜到的符合条件的就是最小的
#include<bits/stdc++.h> #define N 110000
using namespace std; int m,k;
struct node{
int x,i,last;
}q[N]; bool M[N]; void print(int x){
if(q[x].last==){printf("%d",q[x].x);return;};
print(q[x].last);
printf("%d",q[x].i);
} int main()
{
scanf("%d%d",&k,&m);
int t=;
for(int i=;i<k;i++){
if(i%m==){
printf("%d",i);
return ;
}
else {
M[i%m]=;
q[++t].x=i%m;
q[t].i=i;
q[t].last=;
}
} int h=;
while(h<=t){
for(int i=;i<k;i++){
int x=(q[h].x*+i)%m;
if(M[x]==) continue;
M[x]=;
q[++t].x=x;
q[t].last=h;
q[t].i=i;
if(x%m==){
print(t);
return ;
}
}++h;
} return ;
}