史上最难的问题
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 22160 | Accepted: 12165 |
Description
儒略•凯撒生活在充满危险和阴谋的年代,而其中最艰难的状况莫过于求得生存。于是他发明了最早的密码系统之一,用于军队的消息传递。
假设你是凯撒军团中的一名军官,需要把凯撒发送的消息破译出来,并提供给你的将军。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A都分别替换成字母F)。而你要获得消息原文,也就是要将这个过程反过来。
密码字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
原文字母:V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
注意:只有字母会发生替换,其他非字母的字符不变,并且消息原文的所有字母都是大写的。
假设你是凯撒军团中的一名军官,需要把凯撒发送的消息破译出来,并提供给你的将军。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A都分别替换成字母F)。而你要获得消息原文,也就是要将这个过程反过来。
密码字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
原文字母:V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
注意:只有字母会发生替换,其他非字母的字符不变,并且消息原文的所有字母都是大写的。
Input
最多不超过100个数据集组成,每个数据集之间不会有空行,每个数据集由3部分组成:
1. 起始行:START
2. 密码消息:由1到200个字符组成一行,表示凯撒发出的一条消息.
3. 结束行:END
在最后一个数据集之后,是另一行:ENDOFINPUT
Output
每个数据集对应一行,是凯撒的原始消息。
Sample Input
START NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX END START N BTZQI WFYMJW GJ KNWXY NS F QNYYQJ NGJWNFS ANQQFLJ YMFS XJHTSI NS WTRJ END START IFSLJW PSTBX KZQQ BJQQ YMFY HFJXFW NX RTWJ IFSLJWTZX YMFS MJ END ENDOFINPUT
Sample Output
IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES I WOULD RATHER BE FIRST IN A LITTLE IBERIAN VILLAGE THAN SECOND IN ROME DANGER KNOWS FULL WELL THAT CAESAR IS MORE DANGEROUS THAN HE
import java.util.ArrayList; import java.util.Scanner; public class Main { public static void printPass(ArrayList<String> password) { for (int i = 0; i < password.size(); i++) { if ("START".equalsIgnoreCase(password.get(i)) || "END".equalsIgnoreCase(password.get(i))) { System.out.print(""); } else { System.out.println(translate(password.get(i))); } } } public static String translate(String password) { char[] ch = password.toCharArray(); // A 65 V86 U 85 Z 90 for (int i = 0; i < ch.length; i++) { if (ch[i]>='A'&&ch[i]<='Z') { if ((char) (ch[i] - 5) < 'A') { ch[i] = (char) (ch[i] + 21); } else { ch[i] = (char) (ch[i] - 5); } } } return new String(ch); } public static void main(String[] args) { Scanner cin = new Scanner(System.in); String password = ""; ArrayList<String> pass = new ArrayList<String>(); while (cin.hasNext()) { password = cin.nextLine(); if ("ENDOFINPUT".equalsIgnoreCase(password)) { printPass(pass); } else { pass.add(password); } } } }
注:在ACM提交Code的时候,类名必须为Main,否则编译不通过.
相关推荐
凯撒密码作为最古老的加密技术之一,虽然在现代加密技术面前显得简单且安全性能有限,但其历史价值和教育意义不容小觑。本文将探讨凯撒密码的基本原理及其在Delphi编程语言环境下的实现。 凯撒密码的诞生可追溯至古...
凯撒密码加密和解密python实现源码.zip凯撒密码加密和解密python实现源码.zip凯撒密码加密和解密python实现源码.zip凯撒密码加密和解密python实现源码.zip凯撒密码加密和解密python实现源码.zip凯撒密码加密和解密...
2. **解决编程问题**:实验过程中可能会遇到一些编程上的问题,通过查阅资料可以解决这些问题。 3. **理论与实践结合**:实验有助于加深对理论知识的理解,并且通过实际操作提高解决问题的能力。 4. **思维方式的...
### 凯撒密码Python编程详解 #### 一、凯撒密码简介 凯撒密码(Caesar cipher)是一种非常古老的加密技术,它属于替换密码的一种。其工作原理是将明文中的每个字母按照字母表顺序向前或向后移动固定的位数。这种...
凯撒密码是一种替换密码,它的加密原理十分简单。它通过将字母表中的每个字母按照固定数量进行位移来隐藏信息。这种位移是循环的,意味着如果超过了字母表的末尾,将会从头开始。例如,当偏移量设定为3时,“A”便...
凯撒密码c语言 凯撒密码c语言 凯撒密码c语言凯撒密码c语言 凯撒密码c语言 凯撒密码c语言凯撒密码c语言 凯撒密码c语言 凯撒密码c语言凯撒密码c语言 凯撒密码c语言 凯撒密码c语言凯撒密码c语言 凯撒密码c语言 凯撒密码...
凯撒密码是一种古典的加密算法,通过将明文中的每个字母按照一定的规则替换为另一个字母来实现加密。下面是凯撒密码的简单实现,包括加密和解密两个过程。 什么是凯撒密码 凯撒密码是一种替换式加密算法,将明文中...
凯撒密码,又称移位密码,是历史上最早且最简单的加密技术之一,它通过将明文中的每个字母按照固定数量的位移来实现加密。在本文中,我们将深入探讨凯撒密码的原理、实现方法以及如何通过编程实现这一经典算法。 ...
在给定的【标题】"凯撒加密法的编程题"中,我们可以理解这是一道编程题目,要求使用C语言实现凯撒加密法的算法。C语言是一种底层、高效的编程语言,适合处理这种基础的字符串操作。 【描述】中的"用C语言编的凯撒...
基于Python的凯撒密码加密和解密源码.zip基于Python的凯撒密码加密和解密源码.zip基于Python的凯撒密码加密和解密源码.zip基于Python的凯撒密码加密和解密源码.zip基于Python的凯撒密码加密和解密源码.zip基于Python...
### 凯撒密码,广义凯撒密码加解密问题 #### 一、凯撒密码简介 凯撒密码(Caesar cipher),又称移位密码,是一种最简单的加密技术之一,它通过将明文中的每个字母按照固定数目进行偏移来实现加密。这种加密方式的...
3. **处理非字母字符**:原始文本中的非字母字符通常不作处理,保持原样,也可以选择替换为其他特殊符号,但这不是凯撒密码的标准做法。 4. **组合结果**:将所有加密后的字母重新组成新的字符串,即为密文。 解密...
5. **历史影响**:凯撒密码是密码学发展的基础,它开启了加密技术的研究,激发了后来的更复杂密码系统,如替换密码、置换密码、复式密码等。 6. **教育意义**:尽管凯撒密码在实际应用中已经过时,但它在教学中仍然...
密码学中的凯撒密码 ,C++编写,通过vc6.0测试
凯撒密码,又称为移位密码,是一种古老且基础的加密技术,源于古罗马时期的通信安全。它通过将明文中的每个字符按照一个固定的偏移量进行字母表上的平移来实现加密。例如,如果偏移量是3,那么字母"A"会变成"D","B...
凯撒密码,又称为移位密码,是一种古老且基础的加密技术,由古罗马的朱利叶斯·凯撒所使用,因此得名。它的基本原理是将明文中的每个字母按照固定的数量向字母表中向前或向后移动,形成密文。这种加密方法简单易懂,...
凯撒密码和棋盘密码是两种历史悠久的古典密码学方法,它们在早期通信加密中扮演了重要角色。本文将深入探讨这两种密码的原理,并通过C语言实现这些算法。 首先,让我们了解一下**凯撒密码**(Caesar Cipher)。这是...
凯撒密码,又称为移位密码,是一种古老且基础的加密技术,源于古罗马凯撒大帝时期。在计算机密码学实验教学中,它通常作为介绍加密与解密原理的起点,让学生理解基本的密码学概念。凯撒密码的核心思想是通过将明文中...
凯撒密码,又称为移位密码,是一种古老且基础的加密技术,由古罗马的朱利叶斯·凯撒所使用而得名。它的工作原理是通过将明文中的每个字母按照字母表向右(或向左)移动固定的位数来实现加密。解密过程则是加密的逆...