poj 1465 求一个数的最小倍数满足一个条件

来源:互联网 发布:mac修改淘宝登录密码 编辑:程序博客网 时间:2024/06/11 17:30
#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");    }}}

原创粉丝点击