参考自:https://www.cnblogs.com/ECJTUACM-873284962/p/6412212.htmlSafecracker


Time Limit: 2 Seconds      Memory Limit: 65536 KB

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

no solution

no solution

no solution

题意

  密码序列由一系列大写字母组成,在解密序列不唯一的情况下,按字典序输出最后一个,解密公式:v - w^2 + x^3 - y^4 + z^5 = target

  由于题目中解的值域已经确定,解元素中的v,w,x,y,z都是题目中给定集合中的一个元素,数据范围较小枚举便可。

解题思路:

由于题目中解的值域已经确定,解元素中的v,w,x,y,z都是题目中给定集合中的一个元素,数据范围较小枚举便可。

*注意:由于题目求得是密码序列是按字典顺序的最后一个,所以再次我将之先降序排序,这样一来找到的第一个符合条件的肯定便是最后的!

代码

 #include <bits/stdc++.h>
using namespace std;
char letters[];
int value[],target;
void process(int len)
{
int a,b,c,d,e;
for(a=;a<len;a++)
for(b=;b<len;b++)
if(a!=b)
for(c=;c<len;c++)
if(a!=c&&b!=c)
for(d=;d<len;d++)
if(a!=d&&b!=d&&c!=d)
for(e=;e<len;e++)
if(a!=e&&b!=e&&c!=e&&d!=e)
if(value[a]-pow(value[b],2.0)+pow(value[c],3.0)-pow(value[d],4.0)+pow(value[e],5.0)==target)
{
printf("%c%c%c%c%c\n",value[a]+'A'-,value[b]+'A'-,value[c]+'A'-,value[d]+'A'-,value[e]+'A'-);
return;
}
printf("no solution\n");
}
bool compare(int a,int b)
{
return a>b;
}
int main()
{
int i;
while(scanf("%d%s",&target,letters)!=EOF)
{
if(target==&&strcmp(letters,"END")==)
return ;
i=;
while(letters[i])
{
value[i]=letters[i]-'A'+;
i++;
}
sort(value,value+i,compare);
process(i);
}
return ;
}

出处

ZOJ 1403 解密的更多相关文章

  1. 暴力 ZOJ 1403 Safecracker

    题目传送门 /* 暴力:纯暴力,在家水水 */ #include <cstdio> #include <cstring> #include <algorithm> ...

  2. ZOJ 1403&&HDU 1015 Safecracker【暴力】

    Safecracker Time Limit: 2 Seconds      Memory Limit: 65536 KB === Op tech briefing, 2002/11/02 06:42 ...

  3. ZOJ 1403 F-Safecracker

    https://vjudge.net/contest/67836#problem/F "The item is locked in a Klein safe behind a paintin ...

  4. [ZOJ 1006] Do the Untwist (模拟实现解密)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=6 题目大意:给你加密方式,请你求出解密. 直接逆运算搞,用到同余定理 ...

  5. ZOJ Problem Set - 1006 Do the Untwist

    今天在ZOJ上做了道很简单的题目是关于加密解密问题的,此题的关键点就在于求余的逆运算: 比如假设都是正整数 A=(B-C)%D 则 B - C = D*n + A 其中 A < D 移项 B = ...

  6. ZOJ 1006 Do the Untwish

    Do the Untwish 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1006 题意:给定密文按公式解密 注 ...

  7. Detect the Virus ZOJ - 3430 AC自动机

    One day, Nobita found that his computer is extremely slow. After several hours' work, he finally fou ...

  8. PHP的学习--RSA加密解密

    PHP服务端与客户端交互或者提供开放API时,通常需要对敏感的数据进行加密,这时候rsa非对称加密就能派上用处了. 举个通俗易懂的例子,假设我们再登录一个网站,发送账号和密码,请求被拦截了. 密码没加 ...

  9. ASP.NET加密和解密数据库连接字符串

    大家知道,在应用程序中进行数据库操作需要连接字符串,而如果没有连接字符串,我们就无法在应用程序中完成检索数据,创建数据等一系列的数据库操作.当有人想要获取你程序中的数据库信息,他首先看到的可能会是We ...

随机推荐

  1. Raspberry Zero 上实现平滑视频图传

    在某些应用场合我们可能需要通过一个设备通过WIFI将图像传到其它的机器进行显示或者图形分析,那怎么可以低成本地实现呢?其实很简单,我们只需要一块 Raspberry Zero W 和一个RPI 摄像头 ...

  2. ASP.Net Core 运行错误 Http Error 502.5 解决办法

    Http Error 502.5 - Process Failure 如果你看到上面这张图片了的话,说明你在本地运行的时候报错了. 尤其好多都是我的群友,说下情况. 这个一般是本地的.NET Core ...

  3. babel-preset-env使用指南

    文章概览 babel-preset-env是非常重要且常用的一个插件预设,掌握它的用法以及实现原理非常有必要. 本文主要内容包括:babel-preset-env是什么.入门实例.如何配置以支持特定版 ...

  4. Git_GitHub详解

    Git和Github详细教程 一  概述 说到Git和Github,前几天我们知道微软以75亿美元收购全球最大的代码托管和写作平台GitHub,而GitHub是全球最大的代码仓库,很多开发人员都将代码 ...

  5. Lombok 安装、入门以及使用

    lombok 的官方网址:http://projectlombok.org/ lombok 安装    使用 lombok 是需要安装的,如果不安装,IDE 则无法解析 lombok 注解.先在官网下 ...

  6. 正则表达式验证input文本框

    方便以后的查找,直接copy代码在这里了. eg: //公司邮箱验证 if ($("#Email").val() != "") { var myreg = /^ ...

  7. debian下 Hadoop 1.0.4 集群配置及运行WordCount

    说明:我用的是压缩包安装,不是安装包 官网安装说明:http://hadoop.apache.org/docs/r1.1.2/cluster_setup.html,繁冗,看的眼花...大部分人应该都不 ...

  8. Python3练习题 022:用递归函数反转字符串

    方法一 str = input('请输入若干字符:')   def f(x):     if x == -1:         return ''     else:         return s ...

  9. React Native之FlatList的介绍与使用实例

    React Native之FlatList的介绍与使用实例 功能简介 FlatList高性能的简单列表组件,支持下面这些常用的功能: 完全跨平台. 支持水平布局模式. 行组件显示或隐藏时可配置回调事件 ...

  10. Angular 双向数据绑定

    <!DOCTYPE html><html ng-app="myApp"><head lang="en"> <meta ...