超级密码(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) ...
随机推荐
- IOS 文件管理 2
IOS开发-文件管理(二) 五.Plist文件 String方式添加 NSString *path = [NSHomeDirectory( ) stringByAppen ...
- uva1368 DNA Consensus String
<tex2html_verbatim_mark> Figure 1. DNA (Deoxyribonucleic Acid) is the molecule which contains ...
- Core Data数据持久性存储基础教程-备用
摘要 就像我一直说的,Core Data是iOS编程,乃至Mac编程中使用持久性数据存储的最佳方式,本质上来说,Core Data使用的就是SQLite,但是通过一系列特性避免了使用SQL的一些列的麻 ...
- win8、win8.1官方版本、及安装密钥
云盘地址:Windows 8 简体中文专业版+核心版 MSDN 正式版(32位)http://pan.baidu.com/s/1eQgiAiQSHA1:0C4A168E37E38EFB59E88443 ...
- mysql Event、存储过程、表命令
Mysql事件调度器(Event Scheduler)类似于定时器,可以在某一个时间点执行一个SQL语句或一个语句块(BEGIN ... END):或者每隔固定间隔重复执行.类似于Linux下的cro ...
- 13.1.17 CREATE TABLE Syntax
13.1.17 CREATE TABLE Syntax 13.1.17.1 CREATE TABLE ... LIKE Syntax 13.1.17.2 CREATE TABLE ... SELECT ...
- pl/sql执行动态sql
SQL> declare msql varchar2(200); begin loop msql := 'select * from bfw_test' ...
- Android开发中用到的框架、库介绍
Android开发中用到的框架介绍,主要记录一些比较生僻的不常用的框架,不断更新中...... 网路资源:http://www.kuqin.com/shuoit/20140907/341967.htm ...
- Oracle表、列、约束的操作
获得有关表的信息 可以直接DESCRIBE DESC[RIBE] table_name; 可以通过数据字典 SELECT * FROM user_tables WHERE table_name =xx ...
- [Python学习笔记][第四章Python字符串]
2016/1/28学习内容 第四章 Python字符串与正则表达式之字符串 编码规则 UTF-8 以1个字节表示英语字符(兼容ASCII),以3个字节表示中文及其他语言,UTF-8对全世界所有国家需要 ...