=== 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."

``` #include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#define inf 0x7fffffff
using namespace std;
typedef long long LL;

char str[];
LL an[]={,,,,,,,,,,,,,,,,,,,,
,,,,,};
LL target;

int cmp_char(const void *_a,const void *_b)
{
char *a=(char *)_a;
char *b=(char *)_b;
return *a - *b;
}

int main()
{
while (scanf("%I64d%s",&target,str)!=EOF)
{
if (target== && strcmp(str,"END")==) break;
int len=strlen(str);
qsort(str,len,sizeof(char),cmp_char);
int flag=;
for (int i=len- ;i>= ;i--)
{
for (int j=len- ;j>= ;j--) if (j!=i)
{
for (int k=len- ;k>= ;k--) if (k!=i && k!=j)
{
for (int u=len- ;u>= ;u--) if (u!=i&&u!=j&&u!=k)
{
for (int v=len- ;v>= ;v--) if (v!=i&&v!=j&&v!=k&&v!=u)
{
LL value=an[str[i]-'A']-an[str[j]-'A']*an[str[j]-'A']+an[str[k]-'A']*
an[str[k]-'A']*an[str[k]-'A']-an[str[u]-'A']*an[str[u]-'A']*an[str[u]-'A']
*an[str[u]-'A']+an[str[v]-'A']*an[str[v]-'A']*an[str[v]-'A']*an[str[v]-'A']*an[str[v]-'A'];
if (value==target)
{
flag=;
cout<<str[i]<<str[j]<<str[k]<<str[u]<<str[v]<<endl;
break;
}
}
if (flag) break;
}
if (flag) break;
}
if (flag) break;
}
if (flag) break;
}
if (!flag) printf("no solution\n");
}
return ;
}```

## hdu 1015 Safecracker 水题一枚的更多相关文章

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

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

2. HDU 1015 Safecracker 解决问题的方法

Problem Description === Op tech briefing, 2002/11/02 06:42 CST ===  "The item is locked in a Kl ...

3. hdu 5210 delete 水题

Delete Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5210 D ...

4. poj 2586 Y2K Accounting Bug(贪心算法，水题一枚)

#include <iostream> using namespace std; /*248K 32MS*/ int main() { int s,d; while(cin>> ...

5. PAT甲题题解-1019. General Palindromic Number (20)-又是水题一枚

n转化为b进制的格式,问你该格式是否为回文数字(即正着写和倒着写一样)输出Yes或者No并且输出该格式又是水题... #include <iostream> #include <cs ...

6. hdu 1251 (Trie水题）

统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)Total Submi ...

7. hdu 2053 Switch Game 水题一枚，鉴定完毕

Switch Game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

8. HDU 5703 Desert 水题 找规律

已知有n个单位的水,问有几种方式把这些水喝完,每天至少喝1个单位的水,而且每天喝的水的单位为整数.看上去挺复杂要跑循环,但其实上,列举几种情况之后就会发现是找规律的题了= =都是2的n-1次方,而且这 ...

9. HDU 4493 Tutor 水题的收获。。

题目: http://acm.hdu.edu.cn/showproblem.php?pid=4493 题意我都不好意思说,就是求12个数的平均数... 但是之所以发博客,显然有值得发的... 这个题最 ...

## 随机推荐

1. 从xfire谈WebService接口化编程

前段时间有博友在看我的博文<WebService入门案例>后,发邮件问我关于WebService 接口在java中的开发,以及在实际生产环境中的应用.想想自己入职也有一段时间了,似乎也该总 ...

2. weblogic启动失败：Could not obtain the localhost address 解决办法

linux下weblogic启动如果出现这个错误,多半是hosts文件不对 1.先输入hostname,查看本机计算机名(比如:server123) 2.sudo vi /etc/hosts 编辑ho ...

3. 更改ubuntu下mysql的密码

1.首先,进入环境中去,即 mysql  -u  root  -p   ,然后输入原始密码 2.此时会出现 mysql > 3.开始修改密码: mysql >   use  mysql ; ...

5. bzoj4525: [Usaco2016 Jan]Angry Cows

二分. #include<cstdio> #include<algorithm> #include<cstring> using namespace std; + ...

6. html 知识

<pre name="code" class="python"><pre name="code" class=" ...

7. bootstrap导航条+模态对话框+分页样式

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

8. mysql数据库忘记密码时如何修改

工具/原料 mysql数据库 cmd命令行 打开mysql.exe和mysqld.exe所在的文件夹,复制路径地址 打开cmd命令提示符,进入上一步mysql.exe所在的文件夹

9. idea使用教程(1)

引言:本教程主要讲解一下常用的配置安装方法,不包含软件安装,按照以下教程配置后,可以直接用于生产环境. 参考网址:参考了尚硅谷关于idea的使用教学视屏 idea注册码地址:http://idea.l ...

10. 菜鸟教程之工具使用（一）——Git的基本使用

Git是进来比较火的版本控制工具,大有取代svn的趋势.关于两种孰好孰坏我就不多费口舌了,网上关于二者的对比文章比比皆是.作为一个IT人员关注行业的发展动态是必须的,所以抽空研究了一下Git的使用.跟 ...