Safecracker

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 13237    Accepted Submission(s): 6897

Problem Description
=== Op tech briefing, 2002/11/02 06:42 CST ===
"The
item is locked in a Klein safe behind a painting in the second-floor
library. Klein safes are extremely rare; most of them, along with Klein
and his factory, were destroyed in World War II. Fortunately old
Brumbaugh from research knew Klein's secrets and wrote them down before
he died. A Klein safe has two distinguishing features: a combination
lock that uses letters instead of numbers, and an engraved quotation on
the door. A Klein quotation always contains between five and twelve
distinct uppercase letters, usually at the beginning of sentences, and
mentions one or more numbers. Five of the uppercase letters form the
combination that opens the safe. By combining the digits from all the
numbers in the appropriate way you get a numeric target. (The details of
constructing the target number are classified.) To find the combination
you must select five letters v, w, x, y, and z that satisfy the
following equation, where each letter is replaced by its ordinal
position in the alphabet (A=1, B=2, ..., Z=26). The combination is then
vwxyz. If there is more than one solution then the combination is the
one that is lexicographically greatest, i.e., the one that would appear
last in a dictionary."
v - w^2 + x^3 - y^4 + z^5 = target
"For
example, given target 1 and letter set ABCDEFGHIJKL, one possible
solution is FIECB, since 6 - 9^2 + 5^3 - 3^4 + 2^5 = 1. There are
actually several solutions in this case, and the combination turns out
to be LKEBA. Klein thought it was safe to encode the combination within
the engraving, because it could take months of effort to try all the
possibilities even if you knew the secret. But of course computers
didn't exist then."
=== Op tech directive, computer division, 2002/11/02 12:30 CST ===
"Develop
a program to find Klein combinations in preparation for field
deployment. Use standard test methodology as per departmental
regulations. Input consists of one or more lines containing a positive
integer target less than twelve million, a space, then at least five and
at most twelve distinct uppercase letters. The last line will contain a
target of zero and the letters END; this signals the end of the input.
For each line output the Klein combination, break ties with
lexicographic order, or 'no solution' if there is no correct
combination. Use the exact format shown below."
 
Sample Input
1 ABCDEFGHIJKL
11700519 ZAYEXIWOVU
3072997 SOUGHT
1234567 THEQUICKFROG
0 END
Sample Output
LKEBA
YOXUZ
GHOST
no solution
 #include<iostream>
#include<cstdio>
#include<cmath>
#include<map>
#include<cstdlib>
#include<vector>
#include<set>
#include<queue>
#include<cstring>
#include<string.h>
#include<algorithm>
#define INF 0x3f3f3f3f
typedef long long ll;
typedef unsigned long long LL;
using namespace std;
const int N = 1e6+;
const ll mod = 1e9+;
char s[];
int a[];
int b[];
int visited[];
int n;
int flag=;
void DFS(int t){
if(flag==)return;
if(t==){
int sum1=b[]+b[]*b[]*b[]+b[]*b[]*b[]*b[]*b[];
int sum2=b[]*b[]+b[]*b[]*b[]*b[];
if(sum1-sum2==n){
flag=;
printf("%c%c%c%c%c\n",b[]-+'A',b[]-+'A',b[]-+'A',b[]-+'A',b[]-+'A');
return ;
}
return ;
}
for(int i=;i>=;i--){
if(visited[i]==)continue;
else if(visited[i]==&&a[i]==){
visited[i]=;
b[t]=i;
DFS(t+);
visited[i]=;
}
}
}
int main(){
while(scanf("%d %s",&n,s)!=EOF){
if(n==&&strcmp(s,"END")==)break;
int len=strlen(s);
flag=;
memset(a,,sizeof(a));
for(int i=;i<len;i++){
int tt=s[i]-'A'+;
a[tt]=;
}
memset(visited,,sizeof(visited));
DFS();
if(flag==)cout<<"no solution"<<endl; } }

hdu 1015(DFS)的更多相关文章

  1. HDOJ(HDU).1015 Safecracker (DFS)

    HDOJ(HDU).1015 Safecracker [从零开始DFS(2)] 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双重DFS HDOJ.1 ...

  2. hdu 1342(DFS)

    Lotto Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  3. F - JDG HDU - 2112 (最短路)&& E - IGNB HDU - 1242 (dfs)

    经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这时候,XHD夫妇也退居了二线,并在风景秀美的诸暨市浬 ...

  4. F - Auxiliary Set HDU - 5927 (dfs判断lca)

    题目链接: F - Auxiliary Set HDU - 5927 学习网址:https://blog.csdn.net/yiqzq/article/details/81952369题目大意一棵节点 ...

  5. hdu - 1072(dfs剪枝或bfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1072 思路:深搜每一个节点,并且进行剪枝,记录每一步上一次的s1,s2:如果之前走过的时间小于这一次, ...

  6. HDU——2647Reward(DFS或差分约束)

    Reward Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  7. P - Sudoku Killer HDU - 1426(dfs + map统计数据)

    P - Sudoku Killer HDU - 1426 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为 ...

  8. hdu 1142(DFS+dijkstra)

    #include<iostream> #include<cstdio> #include<cmath> #include<map> #include&l ...

  9. hdu 1181(DFS)变 形 课

    变形课 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submis ...

随机推荐

  1. sublime text 3 安装 pakcage control

        安装sublime的pakcage control 参考:  https://packagecontrol.io/installation#st3 ctrl+`   import urllib ...

  2. 【软件工程】“谁是卧底”之NABC分析

    结对编程结束之后,迎来了结队编程,经过了很长时间的思考,想到了“谁是卧底”的idea,以下是该游戏的NABC分析: N(need): 即需求,近期,内地一知名综艺节目将“谁是卧底”游戏推广到年轻人中, ...

  3. Ajax基本结构

    $.ajax({ url: "连接到的一般处理程序", data: { "服务端获取时的名称": 获取的用户端的值 }, type: "post&qu ...

  4. 预测帖 苹果在2年之内会换Arm

    这几天看了iPad Pro和新的macbook, 我个人预测,苹果2年之内必换Arm处理器 首先会是笔记本. 而且会把软件移植也做的很好,不需要怎么改代码,只需要编译的时候加入相应的cpu就可以.至于 ...

  5. expect使用demo

    #!/usr/bin/expect set timeout set ip [lindex $argv ] spawn ssh root@$ip expect { "yes/no" ...

  6. Endless Sky源码学习笔记-2

    数据载入框架: void GameData::BeginLoad(const char * const *argv)为数据载入的最上层method,其主要框架为: void Files::Init(c ...

  7. jQuery 取消事件冒泡 阻止后续内容执行 闭包函数 (学习笔记)

    1.取消事件冒泡 <title>取消事件冒泡</title> <style> div { border:solid 1px black; } </style& ...

  8. 极光推送NotificationServiceTest.appex文件变红不存在丢失解决办法

    这个图片是文件丢失的 创建.appex文件 创建.appex文件 把极光demo里面的这两个文件复制粘贴到新的文件件(新创建的文件是 UIViewController类型的所以就把 (Notifica ...

  9. 关于arduino清空串口缓存(转)

    在arduino1.0之前的版本 Serial.flush()的作用是是清空串口缓存( dropping received incoming data).但在1.0之后的版本 Serial.flush ...

  10. [转载]Matlab生成Word报告

    最近在进行一批来料的检验测试,一个个手动填写报告存图片太慢了,就有了种想要使用Matlab在分析完后数据可以自动生成PDF报告的想法,于是就去网上搜索了相关的资料,发现Matlab中文论坛上有xiez ...