超级密码(dfs)
超级密码233
Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 3406 Accepted Submission(s):
1080
密码是一个C进制的数,并且只能由给定的M个数字构成,同时密码是一个给定十进制整数N(0<=N<=5000)的正整数倍(如果存在多个满足条件的数,那么最小的那个就是密码),如果这样的密码存在,那么当你输入它以后门将打开,如果不存在这样的密码......那就把门炸了吧.
注意:由于宝藏的历史久远,当时的系统最多只能保存500位密码.因此如果得到的密码长度大于500也不能用来开启房门,这种情况也被认为密码不存在.
注意:在给出的M个数字中,如果存在超过10的数,我们约定用A来表示10,B来表示11,C来表示12,D来表示13,E来表示14,F来表示15.我保证输入数据都是合法的.
please".
注意:构成密码的数字不一定全部都要用上;密码有可能非常长,不要试图用一个整型变量来保存密码;我保证密码最高位不为0(除非密码本身就是0).
22 10
3
7 0 1
2 10
1
1
25 16
3
A B C
Hint
Huge input, scanf is recommended.
r= k (mod c)則 (k*p+a)(mod c)=(r*p+a)(mod c)
如果某个数值序列的余数为r.....如果某个余数已经被构造过...那么后面得到的一定是与原来构造过的余数序列相同的序列 而由BFS的性质.最短的一定是最先被构造出来的..所以.....先到先得!(每一位使用什么数字都是不变的哦.....就是在同一个数值集合内...). 如果看不懂 看下面的
例如 如果 k1%c==k1k2%c 则 k1k3%c==k1k2k3%c
再特殊一点的 比如 3%4==3 27%4==3 则 31%4==271%4 ,32%4==272%4 ,33%4==273%4...............
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
bool xx[];
int m,n,x;
struct haha
{
int len;
int num[];
}q,temp;
bool vis[];
int judge(struct haha &p)//计算其除以n的余数
{
int len=p.len,tmp=;
for(int i=;i<=len;i++)
{
tmp=(tmp*x+p.num[i])%n;
}
return tmp;
}
void print(struct haha &p)//找到后输出
{
for(int i=;i<=q.len;i++)
{
printf("%X",q.num[i]);//输出大写的用X
}
printf("\n");
return ;
}
void BFS()
{
int i;
memset(vis,,sizeof(vis));
queue<struct haha>que;
for(i=;i<;i++)
{
if(xx[i]==true)
{
q.len=;
q.num[]=i;
int k=judge(q);
if(k==)
{
print(q);
return ;
}
else vis[k]=;
que.push(q);
}
}
while(!que.empty())
{
temp=que.front();
que.pop();
for(i=;i<;i++)
{
if(xx[i]==false) continue;
q=temp;
q.len+=;
q.num[q.len]=i;
int k=judge(q);
if(k!=)
{
if(!vis[k]&&q.len<=)
{
vis[k]=true;
que.push(q);
}
}
else
{
print(q);
return ;
} }
}
printf("give me the bomb please\n");
}
int main()
{
int cas,i;
scanf("%d",&cas);
while(cas--)
{
memset(xx,,sizeof(xx));
scanf("%d %d %d",&n,&x,&m);
for(i=;i<m;i++)
{
int k;
scanf("%x",&k);//用%x输入 省去了转化为数字的繁琐
xx[k]=;
}
if(n==)
{
if(xx[]==true)
printf("0\n");
else printf("give me the bomb please\n");
continue;
}
BFS(); }
return ;
}
超级密码(dfs)的更多相关文章
- hdu.1226.超级密码(bfs)
超级密码 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 中兴F412光猫超级密码破解、破解用户限制、关闭远程控制、恢复路由器拨号
不少家庭都改了光纤入户,那肯定少不了光猫的吧.今天以中兴F412光猫为例介绍下此型号光猫超级密码的破解方法.一.F412超级密码破解方法1.运行CMD,输入telnet 192.168.1.1: 2. ...
- 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 ...
- 电信光纤猫 f412超级密码
中兴F412光猫超级密码破解.破解用户限制.关闭远程控制.恢复路由器拨号 http://bbs.mydigit.cn/simple/?t1021161.html 不少家庭都改了光纤入户,那肯定少不了光 ...
- 华为HG8245 电信 光猫破解获取超级密码
这款光猫是 猫+无线路由器一体的 默认没有打开路由功能. 光猫背后的用户名和密码是有限制的没人什么用处,如果要打开路由功能就得要有 超级用户名和密码 不然就算收的到无线连的起也上不了网 .这时就需要 ...
- 超级密码 hdu1226 bfs
超级密码 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- hdu 1226 超级密码
超级密码 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem D ...
- HDU 1226 超级密码(数学 bfs)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1226 超级密码 Time Limit: 20000/10000 MS (Java/Others) ...
随机推荐
- [TYVJ] P1017 冗余关系
冗余关系 背景 Background 太原成成中学第3次模拟赛 第4题 描述 Description Mrs.Chen是一个很认真很称职的语文老师 ......所以,当她看到学生作文里的人物关系描 ...
- LeetCode_Search a 2D Matrix
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...
- js收集错误信息,错误上报
线上的代码可有有时候用户会反应不好使,一般是因为js造成的! 尤其在移动端各个手机之前的差异特别大. 下面这段代码是获取能帮助你! <script> window.onerror = fu ...
- EBS查询用户客户化的文件配置
select pro.profile_option_name, pro.user_profile_option_name, lev.level_type type, --lev.level_code, ...
- 自定义JSP标签实现语言国际化(类似struts text标签),并同时支持图片、JS文件国际化
源代码及样例下载地址: http://download.csdn.net/detail/u014569459/7169385 一.功能说明: 1. 支持语言国际化 2. 支持图片文件.JS文件国际化 ...
- error C2143 & error C4430
错误 1 error C2143: 语法错误 : 缺少“;”(在“*”的前面) 错误 2 error C4430: 缺少类型说明符 - 假定为 int.注意: C++ 不支持默认 int 错误 3 e ...
- Jquery局部打印插件
局部打印插件 jquery.PrintArea.js js代码 (function ($) { var printAreaCount = 0; $.fn.printArea = fun ...
- RAID,mdadm(笔记)
RAID: 级别:仅代表磁盘组织方式不同,没有上下之分:0: 条带 性能提升: 读,写 冗余能力(容错能力): 无 空间利用率:nS 至少2块盘1: 镜像 性能表现:写性 ...
- vmware虚拟机迁移系统到其它磁盘(xjl456852原创)
有时我们将vmware安装的系统放在了磁盘空间比较小的盘里,后来磁盘空间不够用了,我们需要将文件移动到其它磁盘.腾出这个磁盘的空间. 我安装的系统有10个,总占空间大小170多GB.需要从D盘迁移到G ...
- python高级编程之描述符与属性02
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #元描述符 #特点是:使用宿主类的一个或者多个方法来执行一个任务,可 ...