[PKU] P1298: The Hardest Problem Ever
Description
Caesar lived in a time of danger and intrigue. The hardest situation
Caesar ever faced was keeping himself alive. In order for him to
survive, he decided to create one of the first ciphers. This cipher was
so incredibly sound, that no one could figure it out without knowing
how it worked.
You are a sub captain of Caesar’s army. It is your job to decipher
the messages sent by Caesar and provide to your general. The code is
simple. For each letter in a plaintext message, you shift it five
places to the right to create the secure message (i.e., if the letter
is ‘A’, the cipher text would be ‘F’). Since you are creating plain
text out of Caesar’s messages, you will do the opposite:
Cipher text
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
Plain text
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
Only letters are shifted in this cipher. Any non-alphabetical
character should remain the same, and all alphabetical characters will
be upper case.
Input
to this problem will consist of a (non-empty) series of up to 100 data
sets. Each data set will be formatted according to the following
description, and there will be no blank lines separating data sets. All
characters will be uppercase.
A single data set has 3 components:
- Start line – A single line, “START”
- Cipher message – A single line containing from one to two
hundred characters, inclusive, comprising a single message from Caesar - End line – A single line, “END”
Following the final data set will be a single line, “ENDOFINPUT”.
Output
Sample Input
1 |
START<br>NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX<br>END<br>START<br>N BTZQI WFYMJW GJ KNWXY NS F QNYYQJ NGJWNFS ANQQFLJ YMFS XJHTSI NS WTRJ<br>END<br>START<br>IFSLJW PSTBX KZQQ BJQQ YMFY HFJXFW NX RTWJ IFSLJWTZX YMFS MJ<br>END<br>ENDOFINPUT |
Sample Output
1 |
IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES<br>I WOULD RATHER BE FIRST IN A LITTLE IBERIAN VILLAGE THAN SECOND IN ROME<br>DANGER KNOWS FULL WELL THAT CAESAR IS MORE DANGEROUS THAN HE |
Source
Solution:
[#M_ more.. | less.. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import java.util.*; public class P1298 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String clist = "VWXYZABCDEFGHIJKLMNOPQRSTU"; String line; while(sc.hasNextLine()) { line = sc.nextLine(); if(line.equals("ENDOFINPUT")) break; else if(line.equals("START")) { String cipher = sc.nextLine(); String ret=""; for(int i=0; i<cipher.length(); i++) { if(Character.isLetter(cipher.charAt(i))) ret+=clist.charAt((cipher.charAt(i)-'A')%26); else ret+=cipher.charAt(i); } System.out.println(ret); } } } } |
아이러니하게도 hardest problem이라는데 가장 많이 풀렸군요 ^^;;
ㅎㅎ 그러게요 :)
아이러닉한 제목이 컨셉인듯 -_-ㅋㅋ
간단한 Caesar cipher 문제인데 말이죠 ㅎㅎ
근데.. 어제 이문제보다 더 쉬운 문제를 찾아버렸네요 -0-;;