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 ...
随机推荐
- Day 11 正则表达式
正则表达式 一.简介 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配到的行打印出来.grep全称是Globally search for a Regular ...
- C++ 使用成员初始化列表的一个小坑
注意在成员列表中初始化的顺序并不是列表顺序 而是: 在类中声明的顺序! EventLoop::EventLoop() :looping(false), quit(false),_tid(curThre ...
- java并发编程阻塞队列
在前面我们接触的队列都是非阻塞队列,比如PriorityQueue.LinkedList(LinkedList是双向链表,它实现了Dequeue接口). 使用非阻塞队列的时候有一个很大问题就是:它不会 ...
- How to fill the background with image in landscape in IOS? 如何使image水平铺满屏幕
UIImageView *backgroundImage = [[UIImageView alloc] initWithFrame:self.view.frame]; [backgroundIm ...
- 数据库系统学习(八)-SQL语言与数据库完整性和安全性
第八讲 SQL语言与数据库完整性 重难点 数据库完整性的概念 关系数据库 防止和避免数据库中不合理数据的出现 输入错误,操作失误,程序处理错误等 完整性约束条件的一般形式 对O操作集合,当出现A情况时 ...
- 关于Memcached的CAS和Set方法造成Socket泄漏的问题
为了解决多并发下写Memcached的冲突方案,我们项目组引入了CAS机制.类同于Java并发包中的CAS(Compareand set)原子操作,用来处理同一个Item被多个线程更改的并发问题.Me ...
- Servlet的部署开发细节以及注意事项
学习servlet最困难的我感觉还是配置,一開始是非常麻烦的.为了较好的学习,一開始还是以手动开发我认为比較好,可是真的有点把握给搞晕了,尤其是部署servlet方面非常麻烦,这里做一下简单的总结,前 ...
- 一道有关switch-case题目
一道有关switch-case题目 /** * * @title:SwitchCase.java * @Package:com.you.hbxs.model * @Description:<h3 ...
- busybox 终端支持 ctrl-r
Busybox Settings ---> Busybox Library Tuning ---> [*] History saving [ ] Save history on shell ...
- openwrt gstreamer实例学习笔记(六. gstreamer Pads及其功能)
一:概述 如我们在Elements一章中看到的那样,Pads是element对外的接口.数据流从一个element的source pad到另一个element的sink pad.pads的功能(cap ...