//poj 1465
//sep9
#include <iostream>
#include <algorithm>
using namespace std;
int n,m,p;
int num[16],vis[8192];
struct NODE
{
int dig,r,pre;
}Q[8192];
void print(int x)
{
if(x!=-1){
print(Q[x].pre);
printf("%d",Q[x].dig);
}
}
void bfs()
{
int l=0,r=0;
memset(vis,0,sizeof(vis));
for(int i=1;i<=m;++i){
if(num[i]==0) continue;
NODE p;
p.dig=num[i];
p.pre=-1;
p.r=num[i]%n;
Q[r++]=p;
}
while(l<r){
NODE now=Q[l];
if(now.r==0){
print(l);
puts("");
return;
}
for(int i=1;i<=m;++i){
NODE nxt;
nxt.dig=num[i],nxt.r=(10*now.r+num[i])%n,nxt.pre=l;
if(!vis[nxt.r]){
Q[r++]=nxt;
vis[nxt.r]=1;
}
}
l++;
}
puts("0");
}
int main()
{
while(scanf("%d",&n)==1){
scanf("%d",&m);
for(int i=1;i<=m;++i)
scanf("%d",&num[i]);
sort(num+1,num+1+m);
if(n==0){
puts("0");
continue;
}
bfs();
}
return 0;
}
poj 1465 Multiple 静态节点+余数判重+非STL队列的广搜
最新推荐文章于 2019-07-25 14:45:46 发布