超级密码(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) ...
随机推荐
- linux最大文件句柄数量总结
转载:http://jameswxx.iteye.com/blog/2096461 useradd -g gid -G gid1,gid2 user usermod -g gid -G gid1,gi ...
- Solr简单部署
因为公司最近涉及这个项目,想了解一下,以便提供更好的支持.. 参考URL: http://www.centoscn.com/CentosServer/test/2014/1127/4193.html ...
- openssl对数组加密解密的完整实现代码
本例是用C实现的对一个数组进行加密,加密到第二个数组,然后解密到另一个数组的完整实现代码. #include <stdio.h> #include <string.h> #in ...
- Java获取当前日期的前一个月,前一天的时间
Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DATE, -); //得到前一天 calendar.add(Cal ...
- Berserk Rook
Berserk Rook As you may know, chess is an ancient game for which almost everyone has at least a basi ...
- C++中初始化和定义对象的语法,带括号与不带括号的区别
小记:运行环境:win xp vs2008 #include <iostream>#include <string> using std::cout;using std::c ...
- ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase
原文地址:http://www.51csharp.com/MVC/882.html ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL 引言-- 在初级篇中,我们 ...
- Android_Studio常用插件
Android studio常用插件,可极大简化开发,增强开发效率. 不懂安装studio插件,看参考博文:android stuido插件安装:http://blog.csdn.net/liang5 ...
- REVERSE关键字之REVERSE索引
昨天说到REVERSE关键字可以指REVERSE函数和REVERSE索引,简单介绍了下REVERSE函数的含义,今天简单整理下REVERSE索引. REVERSE索引也是一种B树索引,但它物理上将按照 ...
- 【转】手机web——自适应网页设计(html/css控制)
手机web——自适应网页设计(html/css控制) 就目前形势来看,Web App 正是眼下的一个趋势和潮流,但是,对于Web App的设计可能大家有的不是很了解,下面就将整理好的网页设计的技巧奉献 ...