HDU 1226 超级密码(BFS) (还需研究)
Description
密码是一个C进制的数,并且只能由给定的M个数字构成,同时密码是一个给定十进制整数N(0<=N<=5000)的正整数倍(如果存在多个满足条件的数,那么最小的那个就是密码),如果这样的密码存在,那么当你输入它以后门将打开,如果不存在这样的密码......那就把门炸了吧.
注意:由于宝藏的历史久远,当时的系统最多只能保存500位密码.因此如果得到的密码长度大于500也不能用来开启房门,这种情况也被认为密码不存在.
Input
注意:在给出的M个数字中,如果存在超过10的数,我们约定用A来表示10,B来表示11,C来表示12,D来表示13,E来表示14,F来表示15.我保证输入数据都是合法的.
Output
注意:构成密码的数字不一定全部都要用上;密码有可能非常长,不要试图用一个整型变量来保存密码;我保证密码最高位不为0(除非密码本身就是0).
Sample Input
22 10
3
7 0 1
2 10
1
1
25 16
3
A B C
Sample Output
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <queue>
#include <stack>
using namespace std;
int n,m,k;
int re[];
void init()
{
scanf("%d%d%d",&n,&m,&k);
char ch[];
for(int i=; i<k; i++)
{
scanf("%s",ch);
if(ch[]<=''&&ch[]>='') re[i]=ch[]-'';
else re[i]=ch[]-'A'+;
}
sort(re,re+k);//将所有组成密码数字存贮在re数组里,并由小到大排序,re数组就成为了bfs的节点源。
}
int pre[];
int v[];
int ans[],cnt;
queue<int> que;
void find(int k)
{
if(pre[k]!=-) find(pre[k]);
ans[cnt++] = v[k];
}
void solve()
{
if(n==)
{
if(re[]!=)
printf("give me the bomb please\n");
else
printf("0\n");
return ;
}
memset(v,-,sizeof(v));
while(!que.empty()) que.pop();
for(int i=; i<k; i++)
{
if(re[i])
{
que.push(re[i]%n);
if(v[re[i]%n]==-)
pre[re[i]%n]=-,v[re[i]%n] = re[i];//将re数组里的数字全部对n取模,存放在队列里,成为第一批节点。
}
}
while(!que.empty())
{
int e = que.front();
que.pop();
if(e==) break ;
for(int i=; i<k; i++)
{
int t = (e*m+re[i])%n;//我也还暂时不明白为什么是这么写,反正是衍生出下一批节点。
if(v[t]!=-) continue;
pre[t] = e;
v[t] = re[i];
que.push(t);
}
}
if(v[]==-)
{
printf("give me the bomb please\n");
return ;
}
cnt = ;
find();//搜索结果,直至取模值为0,即得到最终结果。
if(cnt>)
{
printf("give me the bomb please\n");
return ;
}
for(int i=; i<cnt; i++)
{
if(ans[i]<=) printf("%d",ans[i]);
else printf("%c",ans[i]-+'A');
}
printf("\n");
}
int main()
{
int cas;
scanf("%d",&cas);
while(cas--)
{
init();
solve();
}
return ;
}
HDU 1226 超级密码(BFS) (还需研究)的更多相关文章
- hdu.1226.超级密码(bfs)
超级密码 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- HDU 1226 超级密码(数学 bfs)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1226 超级密码 Time Limit: 20000/10000 MS (Java/Others) ...
- hdu 1226 超级密码
超级密码 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem D ...
- hdu 1226 超级密码(bfs+余数判重)
题意:略过 分析:用m个数字组成一个能够被n整除的c进制数的最小值,实际上本题的关键就在于这个最小值上. 首先确定我们的思路是从小到大寻找.先查看一位数,即查看着m个数字是否能被n整除:若不能,就查 ...
- HDOJ 1226 超级密码(bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1226 思路分析:题目要求寻找一串长度不大于500的C进制的密码,且该密码需要为十进制数N的整数倍. & ...
- HDU 1226 超级密码 (搜素)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1226 题意简单,本来是一道很简单的搜素题目. 但是有两个bug: 1.M个整数可能有重复的. 2.N可 ...
- hdu1226超级密码 bfs
题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1226/ 题目大意是:寻找一个五百位之内的C进制密码,该密码是N的正整数倍,而且只能用给定的数构成密码,求这样的密 ...
- HDOJ 1226 超级密码
超级密码 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- 超级密码(bfs)
超级密码 Time Limit : 20000/10000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ...
随机推荐
- java环境变量修改后不生效
修改java环境变量后,cmd查看java版本,还是之前的版本,需要做以下处理: 1. 删除C:\Windows\System32目录下的相关的java.exe.javaw.exe.javaws.ex ...
- 吴裕雄--天生自然JAVA数据库编程:JDBC操作步骤及数据库连接操作
public class ConnectionDemo01{ // 定义MySQL的数据库驱动程序 public static final String DBDRIVER = "org.gj ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 图片:图片响应式 (将很好地扩展到父元素)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- JuJu团队1月7号工作汇报
JuJu团队1月7号工作汇报 JuJu 周六周日放假,所以空了两天~ Scrum 团队成员 今日工作 剩余任务 困难 飞飞 完成data process readme部分 实现三维Dense 无 ...
- springboot的maven多模块项目架构微服务搭建——构建多模块项目(依赖方式)
总想对微服务架构做一个小小的总结,不知如何下手,最近觉得还是从搭建微服务的过程来入手,对于springboot的maven项目从构建多模块架构进而衍化为常用的微服务架构来做个记录吧. 首先,创建多个s ...
- tools.logback
https://logback.qos.ch/manual/index.html Logback is built upon three main classes: Logger, Appender ...
- Day4 - I - Trucking HDU - 2962
A certain local trucking company would like to transport some goods on a cargo truck from one place ...
- ELK之 elasticsearch ES集群 head安装
最近项目用到 jenkins ELK 也在一次重新学习了一次 jenkins 不用说了 玩得就是 插件 + base---shell , ELK 这几年最流得log收集平台,当然不止 ...
- 软件包管理:RPM包管理-yum在线管理
CentOS 是免费的的 RedHat需要付费 1.IP地址配置 setup #使用setup工具 (这种方式配置的永久有效 同时还可以配置掩码 网关等) 直接输入setup就会弹出(注意的是该命令 ...
- POJ 3250:Bad Hair Day 好玩的单调栈
Bad Hair Day Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 15699 Accepted: 5255 Des ...