//因为n是小于等于10000可以利用这点进行搜索对n取余则余数为零时就为所找的。因为他的余数肯定小于10000所以不会无休止下去

#include<stdio.h>

#include<string.h>

#include<queue>

#include<iostream>

#include<algorithm>

#define N 1111111

using namespace std;

int pre[N],now[N],a[20];

void find(int k) {

if(pre[k]!=-1) 

find(pre[k]);

printf("%d",now[k]);

}

void bfs(int n) {

int cur,i,j,k,next;

queue<int>q;

for(i=1;i<=9;i++)//判断1位数的情况

if(a[i]==0) {

k=i%n; 

if(k==0)  {

printf("%d\n",i);

return ;

}

if(pre[i]==0) {

pre[i]=-1;

now[i]=i;


q.push(i);

}

}

while(!q.empty()) {

            cur=q.front();

q.pop();

for(i=0;i<=9;i++) 

if(a[i]==0) {

next=cur*10+i;

k=next%n;

if(k==0)  {

 find(cur);

 printf("%d\n",i);

 return ;

}

if(pre[k]==0) {//控制如口如果出现过就肯定不是最小的因为最小的已经加进去过了

pre[k]=cur;//k

now[k]=i;//k

q.push(k);//k的个数是有限的不能用next可能会越界,越界的可能是禁止加入得数组成的数有一些你必须到很大才能遍历完1-10000

}

}

}

  printf("-1\n");

}

int main() {

int n,m,i,j,count=0;

while(scanf("%d%d",&n,&m)!=EOF) {

memset(a,0,sizeof(a));

memset(pre,0,sizeof(pre));

for(i=1;i<=m;i++) {

scanf("%d",&j);

a[j]=1;

}

printf("Case %d: ",++count);

 bfs(n);

 

}

return 0;

}

hdu 4474的更多相关文章

  1. hdu 4474 大整数取模+bfs

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4474 (a*10+b)%c = ((a%c)*10+b%c)%c; 然后从高位开始枚举能填的数字填充, ...

  2. hdu 4474 Yet Another Multiple Problem

    题意: 找到一个n的倍数,这个数不能含有m个后续数字中的任何一个 题解: #include<stdio.h> #include<string.h> #include<qu ...

  3. HDU - 4474 bfs好题

    这个BFS并不是很好想.. 最主要的一点是每个余数只会被拿出来一次更新其他余数, 然后我用d[ i ]表示 到达 i 这个余数最短需要多长,然后从高位往低位贪心,判断成立的时候忘记了如果0被ban掉了 ...

  4. HDU 4474 Yet Another Multiple Problem ( BFS + 同余剪枝 )

    没什么巧办法,直接搜就行. 用余数作为每个节点的哈希值. #include <cstdio> #include <cstring> #include <cstdlib&g ...

  5. HDU 4474 Yet Another Multiple Problem【2012成都regional K题】 【BFS+一个判断技巧】

    Yet Another Multiple Problem Time Limit: 40000/20000 MS (Java/Others)    Memory Limit: 65536/65536 K ...

  6. HDU 4474 Yet Another Multiple Problem BFS

    题意:求m的倍数中不包含一些数码的最小倍数数码是多少.比如15 ,不包含0  1 3,答案是45. BFS过程:用b[]记录可用的数码.设一棵树,树根为-1.树根的孩子是所有可用的数码,孩子的孩子也是 ...

  7. 2012Chhengdu K - Yet Another Multiple Problem

    K - Yet Another Multiple Problem Time Limit:20000MS     Memory Limit:65536KB     64bit IO Format:%I6 ...

  8. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  9. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

随机推荐

  1. spark Listener和metrics实现分析

    在spark内部,rpc可以用来实现不同组件(Driver, executor,client)之间的远程交互.而在同一组件内,spark还有事件监听机制,如spark中各种指标的采集主要就是通过事件监 ...

  2. AJPFX总结Java 程序初始化过程

    觉得Core Java在Java 初始化过程的总体顺序没有讲,只是说了构造器时的顺序,作者似乎认为路径很多,列出来比较混乱.我觉得还是要搞清楚它的过程比较好.所以现在结合我的学习经验写出具体过程: 过 ...

  3. 远程桌面连接windowsServer

    1.win+R 打开windows运行工具栏: 2.输入 mstsc ,确定: 3.登录设置: 计算机:目标服务器ip地址:用户名:管理员或者用户的用户名,例如:administrator:密码:账户 ...

  4. 事件捕获 & 事件冒泡

    <body> <div id="div1"> <div id="div2"> <div id="div3&q ...

  5. Microsoft Project 2010基础使用方法

    5.1 项目管理与Microsoft Project2010 Microsoft Project2010深受广大项目管理工程师的青睐. 5.1.1 项目管理的概念 项目管理是项目管理者在有限的资源约束 ...

  6. upload 上传按钮组件 iview

    <!-- * @description 导入Excel * @fileName importExcel.vue * @author 彭成刚 * @date // :: * @version V1 ...

  7. 已安全化的ActiveX控件卸载时出现"DllUnregisterServer函数出错,错误代码:0x80070002"问题解决

    已安全化的ActiveX控件卸载时出现"DllUnregisterServer函数出错,错误代码:0x80070002"问题解决   情况一:当该控件未注册或者已经卸载时,你尝试卸 ...

  8. Windows Server 2012 R2 with Update (x64) - DVD (Chinese-Simplified)

    http://www.msdn.hk/html/2014/1404.html Windows Server 2012 R2 with Update (x64) - DVD (Chinese-Simpl ...

  9. python之range (范围)

    例题: for i in range(10): print(i,end='') # 输出结果 0123456789 # s = range(1,10) # 面试大坑 python2 和 python3 ...

  10. hibernate 入门配置

    转自: https://segmentfault.com/a/1190000013568216