HDU1226:超级密码(BFS)
来源:互联网 发布:金融互助平台源码 编辑:程序博客网 时间:2024/06/06 00:32
题目链接
题意:给你m个范围为1~16的数,输出在c进制下能找到的n的最小的倍数。不能有前导零。找不到输出”give me the bomb please”。
关键点:
1.倍数的判断:答案最长是500位,不能直接取模判断。
2.如何去重:每位的数字在升序枚举的情况下,如果出现了前面出现过的余数不用加进队列。
(思路我是借鉴网上的代码,很抱歉我自己不是很能清晰的证明,自己做的时候是举了很多例子)
#include <bits/stdc++.h>using namespace std;int num[20];struct node{ int len=0; int s[505];};int n,m,c;bool vis[5005];int mod(node x){ int t=0; for(int i=0; i<x.len; ++i) { t=(t*c+x.s[i])%n;/// 关键点1 } return t;}void pr(node x){ for(int i=0; i<x.len; ++i) { if(0<=x.s[i]&&x.s[i]<=9) printf("%d",x.s[i]); else printf("%c",'A'+x.s[i]-10); } printf("\n");}int bfs(){ memset(vis,0,sizeof(vis));///用的时候再memset。 node a,ne; a.len=0; queue<node>q; for(int i=1; i<16; ++i) { ne=a; if(num[i]) { ne.s[ne.len]=i; ne.len++; int t=mod(ne); if(!t) { pr(ne); return 1; } else if(!vis[t])///关键点2 q.push(ne),vis[t]=1; } } while(!q.empty()) { a=q.front(); q.pop(); for(int i=0; i<16; ++i) { if(num[i]) { ne=a; ne.s[ne.len]=i; ne.len++; int t=mod(ne); if(!t) { pr(ne); return 1; } else if(!vis[t]&&ne.len<=500)///关键点2 q.push(ne),vis[t]=1; } } } return 0;}int main(){// freopen("in.txt","r",stdin); int t; scanf("%d",&t); while(t--) { memset(num,0,sizeof(num)); scanf("%d%d%d",&n,&c,&m); for(int i=0; i<m; ++i) { char ct; scanf(" %c",&ct); if('0'<=ct&&ct<='9') num[ct-'0']++; else num[ct-'A'+10]++; } if(n==0) if(!num[0]) printf("give me the bomb please\n"); else printf("0\n"); else if(bfs()==0) printf("give me the bomb please\n"); } return 0;}
阅读全文
0 0
- hdu1226 超级密码 bfs
- HDU1226:超级密码(BFS)
- HDU1226:超级密码(BFS)
- HDU1226:超级密码(BFS)
- HDU1226超级密码(BFS)
- hdu1226 超级密码 (BFS)
- HDU1226 超级密码(BFS)
- hdu1226 超级密码--BFS
- hdu1226超级密码 bfs
- 超级密码hdu1226 bfs
- HDU1226:超级密码(BFS)
- hdu1226超级密码(简单bfs)
- BFS+一点点数学 HDU1226超级密码
- BFS+一点点数学 HDU1226超级密码
- hdu1226 超级密码(bfs+余数判重)
- hdu1226 超级密码
- HDU1226 超级密码
- HDU1226 超级密码
- 主成分分析(PCA)原理详解
- POJ.2378 Tree Cutting (树形DP 树的重心)
- Ubuntu16.04安装pcl出现cannot find -lvtkproj4解决办法
- python的scikit-learn的主要模块和基本使用
- JS DOM节点
- HDU1226:超级密码(BFS)
- QT之TCP客户端线程通信
- 踩坑之统计请求发送与页面跳转冲突
- 【Cython】Cython语法起步遇到问题
- HDU
- Java学习总结
- 日 子 噢8.17
- 适配器模式
- Linux下的tar压缩解压缩命令详解