注意密码位数<=500 输出注意十六进制改成字母

要点题目都已说明 ac就好

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<queue> #define N 5100
#define L(x) (x<<1)
#define R(x) (x<<1|1)
using namespace std; inline int Max(int a,int b){return a>b?a:b;}
inline int Min(int a,int b){return a<b?a:b;}
int a[20],k,n,c;
int vis[N]; //取模后出现的可能只会是 [0, n-1]
int pre[N];
int num[N];
void BFS(){
memset(vis, 0, sizeof(vis));
memset(pre, -1, sizeof(pre));
queue<int>q;
int mod; for(int i=0;i<k;i++)
{
if(!a[i])continue;
mod = a[i]%n;
if(!vis[mod])
{
vis[mod] = 1;
num[mod] = a[i];
q.push(mod);
} if(a[i]%n == 0)
{if(a[i]<=10)printf("%d\n",a[i]); else printf("%c\n",a[i]-10+'A');return ;}
}
bool su =false;
while(!q.empty() && su == false){
mod = q.front(); q.pop();
for(int i=0;i<k;i++)
{
int now = (mod*c + a[i])%n;
if(now == 0){ pre[now] = mod;num[now]=a[i]; su = true; break; }
if(!vis[now])
{
q.push(now);
vis[now]=1;
pre[now] = mod;
num[now] = a[i];
}
}
} if(su == false){printf("give me the bomb please\n");return ;}
int top=0,ans[N];
for(int i=0; i!=-1;i=pre[i])
ans[top++]=num[i];
if(top>500){printf("give me the bomb please\n");return ;}
for(int i=top-1;i>=0;i--)
if(ans[i]>=10)
printf("%c",ans[i] - 10 +'A');
else
printf("%d",ans[i]);
printf("\n");
} int main(){
int T;scanf("%d",&T); while(T--){
scanf("%d %d %d",&n,&c,&k); for(int i=0;i<k;i++){
char c=getchar();
while( !( '0'<=c && c<='9') && !( 'A'<=c && c<='F')) c=getchar(); if( '0'<=c && c<='9' ) a[i] = c - '0';
else a[i] = c - 'A' +10;
} sort(a,a+k); if(n == 0){
if(a[0])printf("give me the bomb please\n");
else printf("0\n");
continue;
} BFS();
}
return 0;
}
/*
3
22 10
3
7 0 1 2 10
1
1 25 16
3
A B C */

HDU 1226 BFS的更多相关文章

  1. hdu 1226 BFS + bfs记录路径

    http://acm.hdu.edu.cn/showproblem.php? pid=1226 为了节省空间.您可以使用vis初始化数组初始化-1. 发现BFSeasy错了地方 始一直WA在这里:就是 ...

  2. hdu 1226 bfs+余数判重+大数取余

    题目: 超级密码 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  3. hdu 4531 bfs(略难)

    题目链接:点我 第一次不太清楚怎么判重,现在懂了,等下次再做 /* *HDU 4531 *BFS *注意判重 */ #include <stdio.h> #include <stri ...

  4. HDU 1226 超级密码(数学 bfs)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1226 超级密码 Time Limit: 20000/10000 MS (Java/Others)    ...

  5. hdu.1226.超级密码(bfs)

    超级密码 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  6. hdu 1226 超级密码(bfs+余数判重)

    题意:略过 分析:用m个数字组成一个能够被n整除的c进制数的最小值,实际上本题的关键就在于这个最小值上.  首先确定我们的思路是从小到大寻找.先查看一位数,即查看着m个数字是否能被n整除:若不能,就查 ...

  7. HDU 1226 超级密码(BFS) (还需研究)

    Time Limit:10000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Desc ...

  8. HDU 1226 超级密码 (搜素)

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1226 题意简单,本来是一道很简单的搜素题目. 但是有两个bug: 1.M个整数可能有重复的. 2.N可 ...

  9. HDU 2822 (BFS+优先队列)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2822 题目大意:X消耗0,.消耗1, 求起点到终点最短消耗 解题思路: 每层BFS的结点,优先级不同 ...

随机推荐

  1. 【转】深入研究java.lang.Runtime类

    一.概述      Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.      一般不能实例化一个Runtime对象, ...

  2. HeadFirst设计模式之工厂模式

    一. 1."工厂模式"不是种真正的设计模式,而是一种编程术语 2.The Factory Method Pattern defi nes an interface for crea ...

  3. Photoshop:路径填充边缘虚化问题

    怎么才能不让它虚化呢?  解决方案一: 1.同样画出路径 2.新建图层 3.回到路径面板,右击路径图层,选择“填充路径” 4.把“羽化”设置为0,取消选择“消除锯齿” 换个背景色看看效果:一点虚化都没 ...

  4. Subversion安装和使用

    Subversion(SVN)是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说.SVN分为客户端和服务器端,一般服务器端安装在服务器上,我们开发者用的都是客户端.TortoiseSVN是 ...

  5. TSharding:用于蘑菇街交易平台的分库分表组件

    tsharding TSharding is the simple sharding component used in mogujie trade platform. 分库分表业界方案 分库分表TS ...

  6. R语言笔记:快速入门

    1.简单会话 > x<-c(1,2,4) > x [1] 1 2 4 R语言的标准赋值运算符是<-.也可以用=,不过不建议用它,有些情况会失灵.其中c表示连接(concaten ...

  7. HBase Shell输入命令无法删除问题解决技巧

    一.引言: HBase shell使用过程中,使用CRT客户端,命令输入后无法删除一直困绕着我,今天终于受不了,几番度娘,谷哥之后,终于有了解决方法,特共享给大家. 二.操作步骤 secureCRT中 ...

  8. Hadoop课程介绍

    一.课程简介 1. Hadoop是什么? Apache Hadoop是一款支持数据密集型分布式应用并以Apache 2.0许可协议发布的开源软件框架.它支持在商品硬件构建的大型集群上运行的应用程序.H ...

  9. virtualbox怎么装系统OVA虚拟包大全一键安装

    1 第一步,下载ova虚拟包 http://pan.baidu.com/s/1hqxWkUo . 里面有win7.ubuntu.kali,你自己挑一个需要的 全都可以自动缩放屏幕,有VirtualBo ...

  10. 函数flst_get_last

    flst_node_t中存有12个字节的内容,前6个字节(page:4 boffset:2)表示相对自己前一个node的fil_addr_t信息,后6个字节表示相对自己后1个node的fil_addr ...