HDU - 1226 超級密碼
重點是餘數判重 其他就是簡單搜尋問題
但是有兩個bug:
1、M個整數可能有重複的。
2、N可能為0。
int judge(node &a)
{
int tmp=0;
int i;
for(i=0;i<a.len;i++)
{
tmp=(tmp*c+a.base[i])%n;
}
return tmp;
}
#include<stdio.h>
#include<iostream>
#include<string>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
const int maxn = 30;
const int inf = 1<<30;
int n,c,m;
int mark[18];
bool h[18],vis[5005];
struct node
{
int left,len;
string s;
};
char int_char( int k )
{
if( k <= 9 )
return k + '0';
return k-10 + 'A';
}
void BFS()
{
node cur,cnt;
queue<node>que;
memset(vis,0,sizeof(vis));
for( int i = 0; i < m; i ++ ){
if( mark[i] ){
cur.left = mark[i]%n; //大數取餘
cur.s = ""; cur.len = 1;
cur.s += int_char(mark[i]);
if( !cur.left ){
cout<<cur.s<<endl;
return;
}
if( !vis[cur.left] ){
vis[cur.left] = 1;
que.push(cur);
}
}
}
while( !que.empty() ){
cur = que.front(); que.pop();
if( cur.len >= 500 )
break;
for( int i = 0; i < m; i ++ ){
cnt = cur;
cnt.left = (cnt.left*c+mark[i])%n;
if( vis[cnt.left] )
continue;
vis[cnt.left] = true;
cnt.len ++;
cnt.s += int_char(mark[i]);
if( !cnt.left ){
cout<<cnt.s<<endl;
return;
}
que.push(cnt);
}
}
puts("give me the bomb please");
}
int main()
{
//freopen("data.txt","r",stdin);
int cas;
char ch[2];
scanf("%d",&cas);
while( cas -- ){
scanf("%d%d%d",&n,&c,&m);
memset(h,0,sizeof(h));
for( int i = 0; i < m; i ++ ){
scanf("%s",&ch);
if( isdigit(ch[0]) ) //標記出現的數字
h[ch[0]-'0'] = 1;
else
h[ch[0]-'A'+10] = 1;
}
m = 0;
for( int i = 0; i < 16; i ++ ) //存入陣列mark
if( h[i] )
mark[m++] = i;
if( n != 0 ){
BFS();
}
else{
if( mark[0] == 0 )
puts("0");
else
puts("give me the bomb please");
}
}
return 0;
}
相關文章
- 光貓超級帳號密碼,重置光貓獲取超級帳號密碼密碼
- hdu.2042 超級樓梯
- 2024年移動光貓獲取超級密碼密碼
- 讀AI新生:破解人機共存密碼筆記08超級智慧AI密碼筆記
- 移動光貓 UNG853H 獲取超級管理員賬號密碼密碼
- 雲原生重構世界:AI決策構建數字經濟超級密碼AI密碼
- 最爛密碼、神級密碼和逆天改命密碼,我已經跪下叫爸爸了!密碼
- JavaScript密碼強度等級詳解JavaScript密碼
- 密碼安全:密碼設定要求,密碼爆破辦法,密碼歸類使用,密碼處置方案密碼
- 希爾密碼(hill密碼)密碼
- 超強python黑客技術,aircrack-ng突破 wifi 密碼!Python黑客AIWiFi密碼
- 超級實用的 iptables 防火牆指令碼防火牆指令碼
- 應用密碼學——古典密碼密碼學
- 序列密碼與分組密碼密碼
- 密碼密碼
- hdu 2111 Saving HDU (DP)
- 現代密碼-公鑰密碼RSA密碼
- 應用密碼學 - 公鑰密碼密碼學
- 應用密碼學——分組密碼密碼學
- Duboo整合SpringBoot超級詳細例子(附原始碼)Spring Boot原始碼
- 幾個超級實用的css程式碼片段CSS
- 《密碼學系列》|| 密碼學中的流密碼是怎麼回事?密碼學
- 洛谷題單指南-分治與倍增-P1226 【模板】快速冪
- win7三級密碼怎麼設定 win7系統三層密碼建立方法介紹Win7密碼
- 超級乾貨:帶你全面瞭解低程式碼!
- ONES 解碼:為何數字化是“超級工程”
- java集合梳理【10】— Vector超級詳細原始碼分析Java原始碼
- 拆分密碼密碼
- 移位密碼密碼
- 替代密碼密碼
- 密碼抓取密碼
- 密碼學密碼學
- 輕量級超級 css 工具CSS
- 超級表達
- 超級鋼琴
- 超級膠水
- AUTOCAD——超級填充
- PbootCMS忘記密碼後的重置密碼流程boot密碼
- 群暉NAS忘記密碼如何重置密碼密碼