ACM详解(8)——加密

比赛的时候告诉你简单的加密算法,让你完成加密或者解密操作,下面通过几个简单例子介绍。
1、Message Decowding
Description
The cows are thrilled because they've just learned about encrypting messages. They think they will be able to use secret messages to plot meetings with cows on other farms.
Cows are not known for their intelligence. Their encryption method is nothing like DES or BlowFish or any of those really good secret coding methods. No, they are using a simple substitution cipher.
The cows have a decryption key and a secret message. Help them decode it. The key looks like this:
yrwhsoujgcxqbativndfezmlpk
Which means that an 'a' in the secret message really means 'y'; a 'b' in the secret message really means 'r'; a 'c' decrypts to 'w'; and so on. Blanks are not encrypted; they are simply kept in place.
Input text is in upper or lower case, both decrypt using the same decryption key, keeping the appropriate case, of course.
Input
* Line 1: 26 lower case characters representing the decryption key
* Line 2: As many as 80 characters that are the message to be decoded
Output
* Line 1: A single line that is the decoded message. It should have the same length as the second line of input.
Sample Input
eydbkmiqugjxlvtzpnwohracsf
Kifq oua zarxa suar bti yaagrj fa xtfgrj
Sample Output
Jump the fence when you seeing me coming
翻译:简单的加密算法,把字符串中的字符替换成另外的字符,只有对方知道如何替换就可以解密。题目要求根据给定的加密方法和密文,得到原始消息。
解题思路:
第一行eydbkmiqugjxlvtzpnwohracsf相当于密钥,含义是
a对应e
b对于y
c对应d
…
只要把密文序列中的相应字符替换为后面的字符即可。
Kifq oua zarxa suar bti yaagrj fa xtfgrj
把K替换成J
把i替换成u
把f替换成m
…
(注意大小写)
编程的时候:可以定义数组表示密钥。然后对密文进行遍历得到原始信息。不再给出参考代码。
2、Ancient Cipher
Description
Ancient Roman empire had a strong government system with various departments, including a secret service department. Important documents were sent between provinces and the capital in encrypted form to prevent eavesdropping. The most popular ciphers in those times were so called substitution cipher and permutation cipher.
Substitution cipher changes all occurrences of each letter to some other letter. Substitutes for all letters must be different. For some letters substitute letter may coincide with the original letter. For example, applying substitution cipher that changes all letters from 'A' to 'Y' to the next ones in the alphabet, and changes 'Z' to 'A', to the message "VICTORIOUS" one gets the message "WJDUPSJPVT".
Permutation cipher applies some permutation to the letters of the message. For example, applying the permutation <2, 1, 5, 4, 3, 7, 6, 10, 9, 8> to the message "VICTORIOUS" one gets the message "IVOTCIRSUO".
It was quickly noticed that being applied separately, both substitution cipher and permutation cipher were rather weak. But when being combined, they were strong enough for those times. Thus, the most important messages were first encrypted using substitution cipher, and then the result was encrypted using permutation cipher. Encrypting the message "VICTORIOUS" with the combination of the ciphers described above one gets the message "JWPUDJSTVP".
Archeologists have recently found the message engraved on a stone plate. At the first glance it seemed completely meaningless, so it was suggested that the message was encrypted with some substitution and permutation ciphers. They have conjectured the possible text of the original message that was encrypted, and now they want to check their conjecture. They need a computer program to do it, so you have to write one.
Input
Input contains two lines. The first line contains the message engraved on the plate. Before encrypting, all spaces and punctuation marks were removed, so the encrypted message contains only capital letters of the English alphabet. The second line contains the original message that is conjectured to be encrypted in the message on the first line. It also contains only capital letters of the English alphabet.
The lengths of both lines of the input are equal and do not exceed 100.
Output
Output "YES" if the message on the first line of the input file could be the result of encrypting the message on the second line, or "NO" in the other case.
Sample Input
JWPUDJSTVP
VICTORIOUS
Sample Output
YES
翻译:古罗马帝国有两种简单的加密算法,第一种按照顺序替换,例如把a-y分别替换成b-z,把z替换成a,这样可以把VICTORIOUS替换成WJDUPSJPVT。
第二种是打乱顺序消息的顺序,例如<2, 1, 5, 4, 3, 7, 6, 10, 9, 8>的含义就是把第二个字符放在第一位,而把第一位的字符放到第二位,然后是第5个字符,第4个字符,…,可以把VICTORIOUS替换成IVOTCIRSUO。
后来发现同时使用两种算法,加密效果更好。可以把VICTORIOUS替换成JWPUDJSTVP。
题目要求:能不能把第二行中的原文转换为第一行的密文。
解题思路:首先要找出规律,第二种算法只会改变每个字符的位置,但是不会影响每个字符在字符串中出现的次数。例如A在原来的字符串中出现3次,那么通过第二种算法它出现的次数还是3次。第一种算法虽然改变了字符串的内容,但是有些东西没有变化,例如原来字符串中的a、b、c出现的次数分别n1、n2、n3,假设abc替换def,则d、e、f出现的次数应该是n1、n2、n3。所以只要保证相对位置上的字符出现的次数相同即可实现转换。
算法:
统计输入信息第一行中每个字符出现的次数。使用长度为26的数组表示,分别表示字母A到字母Z出现的次数,使用int[] a表示。
统计输入信息第二行中的每个字符出现的次数。使用长度为26的数组表示,分别表示字母A到字母Z出现的次数,使用int[] b表示。
循环26次:
第j次循环中,再循环比较a[(i+j)%26]与b[i]是否相同,如果都相同则说明能够转换,输出YES即可,退出外层循环,否则继续循环。

如果26次循环完之后,没有得到结果,输出NO。

ACM编程竞赛代码实践详解 国际大学生程序设计竞赛(ACM-ICPC)是一项由国际计算机学会(ACM)主办的全球性算法竞赛。这一章将简要介绍ACM-ICPC的起源、竞赛模式和它在编程界的重要性。字符串处理技巧在编程竞赛中占有重要地位。理解和掌握基础的字符串匹配算法,如朴素匹配和KMP算法,以及字符串处理的高级技巧,如字符串哈希,对于解决复杂问题至关重要。在实际应用中,通过将这些算法与其他算法结合,可以优化问题的解决过程,提升代码的运行效率。在后续的章节中,我们将继续探讨ACM竞赛中其他重要的算法和数据结构的应用。 阅读详情

相关推荐

ACM C++代码加密工具

该程序分为加密和解密两个程序,是专门用于加密和解密代码的,可以防止ACM提交代码之后被查重,加密后的代码可以正常编译,提交到OJ上也可以正常AC

C - Message Decowding

C - Message Decowding Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Description The cows are thrilled because they've just learned about

u013599426的专栏 1134

ROS2仿真抓取分拣案例,使用myCobot 280机械臂结合ROS2系统搭建机械分拣站

本案例展示了如何利用myCobot 280 urdf模型构建一个对象分类站,并在ROS2 jazzy中完成运动规划。

m0_71627844的博客 2126

codeup2152: 加密C++

题目描述ACM俱乐部里面有些秘密文件(英文的),我们要把它进行加密。对每一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。输入输入有多组数据。每组数据一行,包含一个字符串(长度&lt;=1000),为需要加密的字符串。输出对应每组数据,输出加密后的字符串。样例输入I am a student. I love you.样例输出...

薄荷糖 343

零外围电路!用CH340X实现ESP32一键下载的完整教程

本文详细介绍了如何利用CH340X系列USB转串口芯片实现ESP32的一键自动下载功能,无需任何外围逻辑控制电路。通过解析CH340X的增强型DTR/RTS功能,提供核心电路设计、电压匹配方案,并指导在Arduino IDE和PlatformIO中进行软件配置,帮助开发者构建简洁、可靠且低成本的ESP32下载方案。

gpu4optimizer的博客 776

(SCADA)监控与数据采集系统

SCADA应用于监控和采集数据来控制工业过程软件。它通过收集和传输实时数据,帮助操作员监视和控制各种设备和过程。

软件技术的专栏 4546

ACM典型试题--简单的加密算法(一)

1. 题目描述 简单的加密算法:把字符串中的字符替换成另外的字符,只有对方知道如何替换就可以 解密。要求根据给定的加密方法和密文,得到原始消息。 输入格式 第一行输入密钥,第二行输入密文。 输出格式 对输入的数据输出解密后的原始信息。 输入样例 eydbkmiqugjxlvtzpnwohracsf Kifq oua zarxa suar bti yaagrj fa xtf...

weixin_30909575的博客 715

泛微Ecology流程数据表结构解析:workflow_requestbase和workflow_currentoperator到底怎么关联查询?

本文深入解析泛微Ecology系统中workflow_requestbase和workflow_currentoperator表的结构与关联机制,提供SQL查询语句示例,帮助开发者高效查询流程数据。涵盖待办事项、已办事项、办结事项和流程监控等典型场景,并分享性能优化技巧和常见问题排查指南。

weixin_33738555的博客 815

ACM典型试题--古代密码(二)

1. 题目描述 古罗马帝国有两种简单的加密算法,第一种按照顺序替换,例如把a-y 分别替换成b-z, 把z 替换成a,这样可以把VICTORIOUS 替换成WJDUPSJPVT。 第二种是打乱顺序消息的顺序,例如的含义就是把第二个字 符放在第一位,而把第一位的字符放到第二位,然后是第5 个字符,第4 个字符,…,可以 把VICTORIOUS 替换成IVOTCIRSUO。 后来发现同时使

赵侠客 2607

运算放大器电路中的T型网络:如何用更小电阻实现高增益并降低噪声?

本文深入解析了运算放大器电路中T型反馈网络的设计与应用。该网络通过三个较小阻值电阻的组合,等效实现高增益,有效规避了传统大反馈电阻带来的显著热噪声问题。文章从数学原理、噪声定量分析到实际设计技巧,系统阐述了如何利用T型网络在实现高增益的同时,显著降低电路噪声并改善整体性能。

banana的博客 319

把云端打印带回办公室:通信场景 SAP_COM_0466 打通 SAP BTP ABAP environment 与本地打印机的 Pull Integration 实战

摘要: 本文探讨云端SAP系统如何通过SAP_COM_0466通信场景实现与本地打印机的安全连接。核心方案采用Pull Integration模式,由本地组件(如SAP Cloud Print Manager或第三方OMS)主动从云端打印队列拉取任务,避免网络边界冲突。配置流程涵盖通信安排创建、打印队列绑定及权限管理,并强调队列类型必须选择"Pull Integration Queue"的关键细节。方案通过分离云端生产与本地打印环节,既保障安全性又便于运维监控,适用于SAP BTP AB

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 145

【ACM】C++程序设计ACM题库总结

浙江工业大学ACM部分题解析+代码

chenmeng的博客 4407

机器人控制仿真软件:MATLAB Simulink Control System Toolbox_(1).MATLAB基础知识

MATLAB(Matrix Laboratory)是由MathWorks公司开发的一种高性能数值计算和可视化软件。它广泛应用于科学计算、工程设计、信号处理、控制系统设计、图像处理等领域。强大的矩阵运算能力:MATLAB的核心是矩阵运算,能够高效处理大规模的数值数据。丰富的工具箱:MATLAB提供了大量的工具箱,如Control System Toolbox、Simulink、Signal Processing Toolbox等,这些工具箱覆盖了多个应用领域。易于使用的图形界面。

kkchenjj的博客 907

从ACM到蓝桥杯:HOJ多赛制配置详解(含OI/IOI模式实战演示)

本文详细解析了如何在开源在线评测系统HOJ中配置ACM、OI、IOI三大主流编程竞赛赛制。通过实战演示,重点介绍了ACM赛制的封榜与滚榜功能、OI/IOI赛制的子任务设计与评分策略,并分享了测试数据加密、异常提交处理等高级管理技巧,帮助竞赛教练与平台管理员高效搭建专业竞赛环境。

tcp8optimizer的博客 298

1.DJI-payload SDK负载开发准备和硬件连接及运行示例代码

大疆psdk开发环境

哒宰的博客 1443

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java sdut acm 2787 加密术

题目链接:点击打开链接 加密术 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 加密技术是一种常用的安全保密手段,利用加密技术可以把重要的数据变成经过加密变成乱码传送,到达目的地后再利用解密手段还原。现在我们发明了一种新的加密技术,即通过在

Annfan123的博客 810

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ACM元老的密码

出于在通信中隐藏信息的需要,人类在很久以前就学会了对传递的信息加密。 由于古时多数人并不识字,最早的秘密书写的形式只用到纸笔或等同物品,随着识字率提高,就开始需要真正的密码学了。最古典的两个加密技巧是: 移位式(Transpositioncipher):将字母顺序重新排列,例如‘help me’变成‘ehplem’; 替代式(substitutioncipher):有

朝歌 966

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

利用ACM服务,快速申请免费的公有证书,你get到了吗?

大家好,我是是Dream呀,最近很多朋友在问Dream,你知道怎么利用ACM快速申请免费的公有整数吗?emmmm这个我确实是了解过,不过也还没有真正学习过。于是趁着这个机会,我立马学习了起来!经过一天的摸索前进,Dream终于是把这个东西从头到尾搞明白啦!

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 1万+

Alibaba ACM SDK for Python 使用教程

Alibaba ACM SDK for Python 使用教程 项目介绍 Alibaba ACM (Application Configuration Management) SDK for Python 是一个用于管理应用程序配置的开源项目。它允许开发者通过简单的 API 调用来管理配置,支持配置的动态更新,从而提高应用程序的灵活性和可维护性。ACM SDK for Python 提供了丰富的功...

gitblog_00115的博客 350

Openjudge 1.8 25:螺旋加密

25:螺旋加密 查看 描述 Chip和Dale发明了一种文本信息加密技术。他们事先秘密约定好矩阵的行数和列数。接着,将字符按如下方式编码: 1. 所有文本只包含大写字母和空格。 2. 每个字符均赋予一个数值:空格=0,A=1,B=2,……,Y=25,Z=26。 按照下图所示的方式,将每个字符对应数值的5位二进制数依次填入矩阵。最后用0将矩阵补充完整。例如,对于信

Lucky_Glass的C++之旅 2820
上一篇: ACM详解(7)——压缩与编码
下一篇: ACM详解(9)——其他
Java_Web_Book
博客等级 码龄18年 8粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值