hdu1226 :点击打开题目链接

本题目由于题目意思,容易得知是一道广搜的题目。

首先。 我们需要知道 ,大数取模,比如 如何判断1234567 对15 取模的数为多少?答案是7,但是如果他是大数怎么办,

假设num数组存一个大数;左边为高位,右边为低位

int temp=0;

for(int i=最高位;i<=个位;i++)

temp=(temp * 某进制+num[i])%N;

return temp;   //  最终的temp就是bignumber  mod N 的值。

如果该余数出现过就没必要再次进队列了,因为此次模一样代表着下次的模也一样当这个数的模为0,那么前面的数模早已经为0,所以,后者没必要进队列。

.12

  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<algorithm>
  4. #include<vector>
  5. #include<string>
  6. #include<string.h>
  7. #include<queue>
  8.  
  9. using namespace std;
  10. const int INF=~(1<<31);
  11. const int MM=1005;
  12.  
  13. int N,C,M;
  14. bool digit[18],vis[5005];
  15.  
  16. int mod(string& a)
  17. {
  18. int temp=0;
  19. for(int i=0; i<a.size(); i++)
  20. {
  21. temp=(temp*C+(int)a[i])%N;
  22. }
  23. return temp;
  24. }
  25. void print(string& a)
  26. {
  27. for(int i=0; i<a.size(); i++)
  28. {
  29. printf("%X",(int)a[i]);
  30. }
  31. cout<<endl;
  32. }
  33. bool bfs()
  34. {
  35. queue<string>q;
  36. string a,b;
  37. for(int i=1; i<=15; i++)
  38. {
  39. if(digit[i])
  40. {
  41. a=(char)i;
  42. if(mod(a)==0)
  43. {
  44. print(a);
  45. return false;
  46. }
  47. q.push(a);
  48. }
  49. }
  50. while(!q.empty())
  51. {
  52. a=q.front();
  53. q.pop();
  54. for(int i=0; i<=15; i++)
  55. {
  56. if(digit[i]&&a.size()+1<=500)
  57. {
  58. b=a+(char)i;
  59. int mood=mod(b);
  60. if(mood==0)
  61. {
  62. print(b);
  63. return false;
  64. }
  65. else
  66. {
  67. if(vis[mood]==0)
  68. {
  69. vis[mood]=1;
  70. q.push(b);
  71. }
  72. }
  73. }
  74. }
  75. }
  76. return true;
  77. }
  78. int main(void)
  79. {
  80. int ncase;
  81. scanf("%d",&ncase);
  82. while(ncase--)
  83. {
  84. memset(digit,0,sizeof(digit));
  85. memset(vis,0,sizeof(vis));
  86. scanf("%d%d%d",&N,&C,&M);
  87. for(int i=0; i<M; i++)
  88. {
  89. int val;
  90. scanf("%x",&val);
  91. digit[val]=true;
  92. }
  93. if(N==0)
  94. {
  95. if(digit[0]) cout<<"0"<<endl;
  96. else cout<<"give me the bomb please"<<endl;
  97. continue;
  98. }
  99. if(bfs()) cout<<"give me the bomb please"<<endl;
  100. }
  101. return 0;
  102. }

hdu1226的更多相关文章

  1. 超级密码 hdu1226 bfs

    超级密码 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  2. HDU-1226 超级密码 (BFS+剪枝)

    Problem Description Ignatius花了一个星期的时间终于找到了传说中的宝藏,宝藏被放在一个房间里,房间的门用密码锁起来了,在门旁边的墙上有一些关于密码的提示信息:密 码是一个C进 ...

  3. hdu1226 超级密码 (BFS,里面用了大数取余原理)

    Problem Description Ignatius花了一个星期的时间终于找到了传说中的宝藏,宝藏被放在一个房间里,房间的门用密码锁起来了,在门旁边的墙上有一些关于密码的提示信息: 密码是一个C进 ...

  4. HDU1226:超级密码(BFS)

    Problem Description Ignatius花了一个星期的时间终于找到了传说中的宝藏,宝藏被放在一个房间里,房间的门用密码锁起来了,在门旁边的墙上有一些关于密码的提示信息: 密码是一个C进 ...

  5. hdu1226超级密码 bfs

    题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1226/ 题目大意是:寻找一个五百位之内的C进制密码,该密码是N的正整数倍,而且只能用给定的数构成密码,求这样的密 ...

  6. hdu 1226 BFS + bfs记录路径

    http://acm.hdu.edu.cn/showproblem.php? pid=1226 为了节省空间.您可以使用vis初始化数组初始化-1. 发现BFSeasy错了地方 始一直WA在这里:就是 ...

  7. 2019的hdu暑假作业(欢迎纠错)

    1219 遍历计数. #include<bits/stdc++.h> #define QAQ 0 using namespace std; ]; ]; int main(){ )){ me ...

随机推荐

  1. 标准C程序设计七---21

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...

  2. HDU - 5973 Game of Taking Stones (威佐夫博弈 高精度)

    题目描述: Two people face two piles of stones and make a game. They take turns to take stones. As game r ...

  3. codevs科技庄园

    /* 因为每一秒只能走一个单位长度,而每走一个单位长度又会消耗一个体力值,如果体力值没有了时间还有也只能按照体力值计算,反之一样,所以V对于时间和体力值取小 cnt记录有桃子的树的个数,node[cn ...

  4. [BOI2007] Mokia

    题目描述 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它能够回 ...

  5. matlab安装及破解

    Matlab安装及破解: 笔者最近要做一些和建模相关的事,故此需要安装Matlab2017版.在此做下笔记. 网盘链接: 链接:https://pan.baidu.com/s/1lN8C7TDFjSV ...

  6. CentOS下常用的 19 条命令

    玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了.当然你也可以在使用时去找一下 ...

  7. 出现二个奇葩bug

    1.js中少了个单引號,指定的href嵌套指定的地址.单双引號混合加入的情况下一点都不好找.让人头痛的是在chrome,ie11下没有出现js报错,在IE8下报html页面第一行出错.少了个;号 2. ...

  8. 使用Python控制1602液晶屏实时显示时间(附PyCharm远程调试)

    前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 本文介绍一下UP板的GPIO资源使用,以及一个使用Python演示一个简单的demo. 本文使用Markdown写成,为获得更好的 ...

  9. 【LeetCode从零单排】No 114 Flatten Binary Tree to Linked List

    题目 Given a binary tree, flatten it to a linked list in-place. For example,Given 1 / \ 2 5 / \ \ 3 4 ...

  10. C#串口通讯教程 简化一切 只保留核心功能 这可能是最易于理解的一篇教程

    C#串口通讯教程 简化一切 只保留核心功能 这可能是最易于理解的一篇教程   串口的定义,请自行了解. C#操作串口通讯在.Net强大类库的支持下,只需要三个步骤: 1 创建 2 打开 3 发送/接受 ...