时间限制:2000 / 1000ms(Java /其他)内存限制:65536 / 32768K(Java /其他)
提交总数:45接受提交:28
问题描述
朱利叶斯·凯撒(Julius Caesar)生活在一个充满危险和阴谋诡计的时代。凯撒(Caesar)面临的最艰难的情况是保持自己的生命。为了使他生存,他决定创建第一个密码。这个密码非常好听,以至于没有人知道它是如何工作的,就无法解决。
您是凯撒大队的副队长。解密凯撒发送的消息并提供给您的将军是您的工作。代码很简单。对于纯文本消息中的每个字母,将其向右移动五个位置以创建安全消息(即,如果字母为“ A”,则密文为“ F”)。由于您是根据Caesar的消息创建纯文本,因此将执行相反的操作:
密文
BCDEFGHIJKLMNOPQRSTUV WXYZ
纯文本
VWXYZABCDEFGHIJKLMNOP QRSTU
在此密码中仅字母移动。任何非字母字符都应保持不变,并且所有字母字符均应为大写。
输入值
此问题的输入将包含(非空的)一系列多达100个数据集。每个数据集将根据以下描述进行格式化,并且没有空行分隔数据集。所有字符均为大写。单个数据集包含3个组成部分:起始行-一行,“ START”密码消息-包含从一到两百个字符(含两端)的一行,包括来自Caesar的一条消息结束线-一行,“ END”最终数据集之后是一行“ ENDOFINPUT”。
输出量
对于每个数据集,将只有一行输出。这是凯撒的原始讯息。
样本输入
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
资源
美国中南部2002
#include<stdio.h>
#include<string.h>
int main() {
char a[200],b[200];
char cc[1000];
int bl1;
for(;;){
gets(a);
if(strcmp(a,"ENDOFINPUT")==0)break;
gets(cc);
for(bl1=0;bl1<strlen(cc);bl1++){
if('A'<=cc[bl1]&&cc[bl1]<='E'){
cc[bl1]+=21;
}else if('E'<cc[bl1]&&cc[bl1]<='Z'){
cc[bl1]-=5;
}
}
printf("%s\n",cc);
gets(b);
}
return 0;
}
利用strcmp来判断结束,用strlen来判断长度,用gets(a/b)来储存开始和结束