#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
bool vis[5050];
int d[11],n,m;
struct node
{
int d;
int r;
int pre;
}q[5050];
int bfs(){
memset(vis,0,sizeof(vis));
q[0].d=0;
q[0].r=0;
q[0].pre=-1;
int l=0,r=1;
while(l<r){
node t=q[l];
int nr=q[l].r;
for(int i=0;i<m;i++)
{
int tr=(nr*10+d[i])%n;
if(!vis[tr]&&(t.pre!=-1||d[i]!=0)){
vis[tr]=1;
t.r=tr;
t.d=d[i];
t.pre=l;
q[r++]=t;
if(tr==0)
return r-1;
}
}
l++;
}
return -1;
}
void solve(int x)
{
if(x>0)
{
solve(q[x].pre);
printf("%d",q[x].d);
}
}
int main(){
while(~scanf("%d",&n)){
scanf("%d",&m);
for(int i=0;i<m;i++) scanf("%d",&d[i]);
sort(d,d+m);
if(n==0){
printf("0\n");
continue;
}
int res=bfs();
if(res==-1)
printf("0\n");
else{
solve(res);
printf("\n");
}
}
}
poj 1465 求一个数的最小倍数满足一个条件
最新推荐文章于 2019-10-01 10:53:23 发布