注意密码位数<=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. php用于URL的base64

    function base64url_encode($plainText) { $base64 = base64_encode($plainText); $base64url = strtr($bas ...

  2. Oracle程序包

    程序包由两部分构成:规范(specification)和主体(body). 创建表 create table PEOPLE ( ID NUMBER primary key not null, NAME ...

  3. Armitage初始化

    Kali2.0 Armitage初始化步骤如下 (1)点击页面的Armitage按钮 (2)提示Metasploit RPC server is not running,是否启动该服务,选择是 (3) ...

  4. Python生成器与yield

    列表推导与生成器表达式 当我们创建了一个列表的时候,就创建了一个可以迭代的对象: >>> squares=[n*n for n in range(3)] >>> f ...

  5. DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录(转)

    http://www.cnblogs.com/LittleHann/p/3828927.html 相关学习资料 http://baike.baidu.com/link?url=77B3BYIuVsB3 ...

  6. wince下sources\sources.cmn\Makefile.def的相关作用

    1:首先是Makefile.def: ---------------------------------------- 在所有驱动的makefile中有!INCLUDE $(_MAKEENVROOT) ...

  7. 【HDOJ】4341 Gold miner

    分组01背包.在一条直线上的点归为一组. /* 4341 */ #include <iostream> #include <sstream> #include <stri ...

  8. UVa 1451 (数形结合 单调栈) Average

    题意: 给出一个01串,选一个长度至少为L的连续子串,使得串中数字的平均值最大. 分析: 能把这道题想到用数形结合,用斜率表示平均值,我觉得这个想法太“天马行空”了 首先预处理子串的前缀和sum,如果 ...

  9. windows ping RPi 2B

    /************************************************************************* * windows ping RPi 2B * 声 ...

  10. Java集合类:AbstractCollection源码解析

    一.Collection接口 从<Java集合:整体结构>一文中我们知道所有的List和Set都继承自Collection接口,该接口类提供了集合最基本的方法,虽然List接口和Set等都 ...