百练 2975 Caesar 暗码 解题呈报

    添加时间:2013-5-29 点击量:

    链接:http://poj.grids.cn/practice/2975/


    题目:




    2975:Caesar 暗码



    总时候限制:
    1000ms
    内存限制:
    65536kB
    描述
    Julius Caesar 生活生计在充斥危险和诡计的年代。为了生活生计,他初次发了然暗码,用于部队的消息传递。假设你是Caesar 军团中的一名军官,须要把Caesar 发送的消息破译出来、并供给给你的将军。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第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
    输入
    最多不跨越100个数据集构成。每个数据集由3项目组构成:
    肇端行:START
    暗码消息:由1到200个字符构成一行,默示Caesar发出的一条消息
    停止行:END
    在最后一个数据集之后,是另一行:ENDOFINPUT
    输出
    每个数据集对应一行,是Caesar 的原始消息。
    样例输入

    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

    样例输出

    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


    代码:



     1 #include <iostream>
    
    2 #include <cstdio>
    3 #include <cstdlib>
    4 #include <cstring>
    5 using namespace std;
    6 const char END_STR[] = ENDOFINPUT\0;
    7 int main()
    8 {
    9 //freopen(F:\\input.txt,r,stdin);
    10
    11 char str[20],chs[300];
    12 while(gets(str),strcmp(str,END_STR) != 0
    13 {
    14 gets(chs);
    15 int length = strlen(chs);
    16 forint i = 0; i < length; i++
    17 {
    18 if(chs[i] >= A && chs[i] <= Z) cout<<(char)((chs[i]-A-5+26)%26 + A);
    19 else cout<<chs[i];
    20 }
    21 cout<<endl;
    22 gets(str);
    23 }
    24
    25
    26 return 0;
    27 }


    思路:


    1.用gets可每次读入一行

    彼此相爱,却不要让爱成了束缚:不如让它成为涌动的大海,两岸乃是你们的灵魂。互斟满杯,却不要同饮一杯。相赠面包,却不要共食一个。一起歌舞欢喜,却依然各自独立,相互交心,却不是让对方收藏。因为唯有生命之手,方能收容你们的心。站在一起却不要过于靠近。—— 纪伯伦《先知》
    分享到: