`
vcdemon
  • 浏览: 20127 次
社区版块
存档分类
最新评论
  • djx410249: 简单的自己想了几个数字测试了下,发现这个数会在经过几次跳动之后 ...
    3n+1
  • I白I: 怎么回事,好多字都卡在外面了 不显示。。。还要查看源代码看内容 ...
    3n+1

凯撒密码 史上最难的问题(呃,这是编程题目的名字,不是真的最难.....)

    博客分类:
  • java
阅读更多
史上最难的问题
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 

注意:只有字母会发生替换,其他非字母的字符不变,并且消息原文的所有字母都是大写的。

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,否则编译不通过.

 

0
0
分享到:
评论

相关推荐

    kaisajiami.rar_caesar delphi_凯撒密码_凯撒密码.com_加密与解密

    凯撒密码,又称凯撒加密法,是一种古老且基础的替换加密技术,源自古罗马的凯撒大帝。...同时,这也提醒我们,虽然凯撒密码在历史上具有重要意义,但在当今数字化社会,为了保护数据安全,应当采用更为先进的加密手段。

    凯撒密码加密和解密python实现源码.zip

    凯撒密码加密和解密python实现源码.zip凯撒密码加密和解密python实现源码.zip凯撒密码加密和解密python实现源码.zip凯撒密码加密和解密python实现源码.zip凯撒密码加密和解密python实现源码.zip凯撒密码加密和解密...

    凯撒密码算法实验

    2. **解决编程问题**:实验过程中可能会遇到一些编程上的问题,通过查阅资料可以解决这些问题。 3. **理论与实践结合**:实验有助于加深对理论知识的理解,并且通过实际操作提高解决问题的能力。 4. **思维方式的...

    凯撒密码python编程.md

    ### 凯撒密码Python编程详解 #### 一、凯撒密码简介 凯撒密码(Caesar cipher)是一种非常古老的加密技术,它属于替换密码的一种。其工作原理是将明文中的每个字母按照字母表顺序向前或向后移动固定的位数。这种...

    凯撒密码c语言 凯撒密码c语言

    凯撒密码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的凯撒密码加密和解密源码.zip基于Python...

    凯撒密码,广义凯撒密码加解密问题

    ### 凯撒密码,广义凯撒密码加解密问题 #### 一、凯撒密码简介 凯撒密码(Caesar cipher),又称移位密码,是一种最简单的加密技术之一,它通过将明文中的每个字母按照固定数目进行偏移来实现加密。这种加密方式的...

    古典密码之凯撒密码源代码

    3. **处理非字母字符**:原始文本中的非字母字符通常不作处理,保持原样,也可以选择替换为其他特殊符号,但这不是凯撒密码的标准做法。 4. **组合结果**:将所有加密后的字母重新组成新的字符串,即为密文。 解密...

    密码学 凯撒密码算法

    5. **历史影响**:凯撒密码是密码学发展的基础,它开启了加密技术的研究,激发了后来的更复杂密码系统,如替换密码、置换密码、复式密码等。 6. **教育意义**:尽管凯撒密码在实际应用中已经过时,但它在教学中仍然...

    凯撒密码 c++编程

    密码学中的凯撒密码 ,C++编写,通过vc6.0测试

    凯撒密码C++的实现

    凯撒密码,又称为移位密码,是一种古老且基础的加密技术,源于古罗马时期的通信安全。它通过将明文中的每个字符按照一个固定的偏移量进行字母表上的平移来实现加密。例如,如果偏移量是3,那么字母"A"会变成"D","B...

    凯撒密码加密解密(含实验报告+c语言完美版)

    凯撒密码,又称为移位密码,是一种古老且基础的加密技术,由古罗马的朱利叶斯·凯撒所使用,因此得名。它的基本原理是将明文中的每个字母按照固定的数量向字母表中向前或向后移动,形成密文。这种加密方法简单易懂,...

    凯撒和棋盘密码.zip

    凯撒密码和棋盘密码是两种历史悠久的古典密码学方法,它们在早期通信加密中扮演了重要角色。本文将深入探讨这两种密码的原理,并通过C语言实现这些算法。 首先,让我们了解一下**凯撒密码**(Caesar Cipher)。这是...

    计算机密码学实验教学使用的凯撒密码转换器.zip

    凯撒密码,又称为移位密码,是一种古老且基础的加密技术,源于古罗马凯撒大帝时期。在计算机密码学实验教学中,它通常作为介绍加密与解密原理的起点,让学生理解基本的密码学概念。凯撒密码的核心思想是通过将明文中...

    凯撒密码加密及解密

    凯撒密码,又称为移位密码,是一种古老且基础的加密技术,由古罗马的朱利叶斯·凯撒所使用而得名。它的工作原理是通过将明文中的每个字母按照字母表向右(或向左)移动固定的位数来实现加密。解密过程则是加密的逆...

Global site tag (gtag.js) - Google Analytics