hdu1226
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
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<vector>
#include<string>
#include<string.h>
#include<queue> using namespace std;
const int INF=~(1<<31);
const int MM=1005; int N,C,M;
bool digit[18],vis[5005]; int mod(string& a)
{
int temp=0;
for(int i=0; i<a.size(); i++)
{
temp=(temp*C+(int)a[i])%N;
}
return temp;
}
void print(string& a)
{
for(int i=0; i<a.size(); i++)
{
printf("%X",(int)a[i]);
}
cout<<endl;
}
bool bfs()
{
queue<string>q;
string a,b;
for(int i=1; i<=15; i++)
{
if(digit[i])
{
a=(char)i;
if(mod(a)==0)
{
print(a);
return false;
}
q.push(a);
}
}
while(!q.empty())
{
a=q.front();
q.pop();
for(int i=0; i<=15; i++)
{
if(digit[i]&&a.size()+1<=500)
{
b=a+(char)i;
int mood=mod(b);
if(mood==0)
{
print(b);
return false;
}
else
{
if(vis[mood]==0)
{
vis[mood]=1;
q.push(b);
}
}
}
}
}
return true;
}
int main(void)
{
int ncase;
scanf("%d",&ncase);
while(ncase--)
{
memset(digit,0,sizeof(digit));
memset(vis,0,sizeof(vis));
scanf("%d%d%d",&N,&C,&M);
for(int i=0; i<M; i++)
{
int val;
scanf("%x",&val);
digit[val]=true;
}
if(N==0)
{
if(digit[0]) cout<<"0"<<endl;
else cout<<"give me the bomb please"<<endl;
continue;
}
if(bfs()) cout<<"give me the bomb please"<<endl;
}
return 0;
}
hdu1226的更多相关文章
- 超级密码 hdu1226 bfs
超级密码 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- HDU-1226 超级密码 (BFS+剪枝)
Problem Description Ignatius花了一个星期的时间终于找到了传说中的宝藏,宝藏被放在一个房间里,房间的门用密码锁起来了,在门旁边的墙上有一些关于密码的提示信息:密 码是一个C进 ...
- hdu1226 超级密码 (BFS,里面用了大数取余原理)
Problem Description Ignatius花了一个星期的时间终于找到了传说中的宝藏,宝藏被放在一个房间里,房间的门用密码锁起来了,在门旁边的墙上有一些关于密码的提示信息: 密码是一个C进 ...
- HDU1226:超级密码(BFS)
Problem Description Ignatius花了一个星期的时间终于找到了传说中的宝藏,宝藏被放在一个房间里,房间的门用密码锁起来了,在门旁边的墙上有一些关于密码的提示信息: 密码是一个C进 ...
- hdu1226超级密码 bfs
题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1226/ 题目大意是:寻找一个五百位之内的C进制密码,该密码是N的正整数倍,而且只能用给定的数构成密码,求这样的密 ...
- hdu 1226 BFS + bfs记录路径
http://acm.hdu.edu.cn/showproblem.php? pid=1226 为了节省空间.您可以使用vis初始化数组初始化-1. 发现BFSeasy错了地方 始一直WA在这里:就是 ...
- 2019的hdu暑假作业(欢迎纠错)
1219 遍历计数. #include<bits/stdc++.h> #define QAQ 0 using namespace std; ]; ]; int main(){ )){ me ...
随机推荐
- BestCoder Round #29 1003 (hdu 5172) GTY's gay friends [线段树 判不同 预处理 好题]
传送门 GTY's gay friends Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Ot ...
- HDU 3001 三进制 状压dp
Travelling Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- laravel 数据库配置
数据库配置文件为项目根目录下的config/database.php //默认数据库为mysql 'default' => env('DB_CONNECTION', 'mysql'), 'mys ...
- Tomcat 7 的domain域名配置,Tomcat 修改JSESSIONID
https://blog.csdn.net/catoop/article/details/64581325
- ueditor整合之后前段不显示高亮
自己整合ueditor插件后,发现在前段显示的时候并没有高亮处理 在网上看了一些方法后,自己尝试了下. 1.在页面上引入相关的js和css文件 主要是以下两个文件 <script src=&qu ...
- centos 下完全卸载 mysql5.6
查看已经安装的服务 rpm –qa|grep -i mysql -i 作用是不区分大小写 yum remove mysql mysql-server mysql-libs compat-mysql51 ...
- java cocurrent并发包
1. java.util.concurrent - Java 并发工具包Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包.这个包包含有一系列能够让 Jav ...
- Netty3 源代码分析 - NIO server绑定过程分析
Netty3 源代码分析 - NIO server绑定过程分析 一个框架封装的越好,越利于我们高速的coding.可是却掩盖了非常多的细节和原理.可是源代码可以揭示一切. 服务器端代码在指定 ...
- CCPhysicsSprite
#ifndef __PHYSICSNODES_CCPHYSICSSPRITE_H__ #define __PHYSICSNODES_CCPHYSICSSPRITE_H__ #include " ...
- 【转载】关于Hash
这个HASH算法不是大学里数据结构课里那个HASH表的算法.这里的HASH算法是密码学的基础,比较常用的有MD5和SHA,最重要的两条性质,就是不可逆和无冲突.所谓不可逆,就是当你知道x的HASH值, ...