有史以来最困难的问题
时间限制:2000 / 1000ms(Java /其他)内存限制:65536 / 32768K(Java /其他)
提交总数:38接受提交:23
问题描述
朱利叶斯·凯撒(Julius Caesar)生活在一个充满危险和阴谋诡计的时代。凯撒(Caesar)面临的最艰难的情况是保持自己的生命。为了使他生存,他决定创建第一个密码。这个密码非常好听,以至于没有人知道它是如何工作的,就无法解决。
您是凯撒大队的副队长。解密凯撒发送的消息并提供给您的将军是您的工作。代码很简单。对于纯文本消息中的每个字母,将其向右移动五个位置以创建安全消息(即,如果字母为“ A”,则密文为“ F”)。由于您是根据Caesar的消息创建纯文本,因此将执行相反的操作:
密文
BCDEFGHIJKLMNOPQRSTUV WXYZ
纯文本
VWXYZABCDEFGHIJKLMNOP QRSTU
在此密码中仅字母移动。任何非字母字符都应保持不变,并且所有字母字符均应为大写。
输入值
此问题的输入将包含(非空的)一系列多达100个数据集。每个数据集将根据以下描述进行格式化,并且没有空行分隔数据集。所有字符均为大写。单个数据集包含3个组成部分:起始行-一行,“ START”密码消息-包含从一到两百个字符(含两端)的一行,包括来自Caesar的一条消息结束线-一行,“ END”最终数据集之后是一行“ ENDOFINPUT”。
输出量
对于每个数据集,将只有一行输出。这是凯撒的原始讯息。
样本输入
开始
NS BFW,JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX
结束
开始
N BTZQI WFYMJW GJ KNWXY NS F QNYYQJ NGJWNFS ANQQFLJ YMFS XJHTSI NS WTRJ
结束
开始
IFSLJW PSTBX KZQQ BJQQ YMFY HFJXFW NX RTWJ IFSLJWTZX YMFS MJ
结束
内吞
样本输出
在战争中,重要的原因是旅行原因
我要比在罗马的伊比利亚小村庄成为第一
危险充分认识到,凯撒比他更危险
资源
美国中南部2002
#include<stdio.h>
#include<string.h>
int main()
{
char str[1000];
int i,l;
while(gets(str))
{
if(strcmp(str,"START")==0)
continue;
else if(strcmp(str,"END")==0)
continue;
else if(strcmp(str,"ENDOFINPUT")==0)
break;
else
{
l=strlen(str);
for(i=0;i<l;i++)
{
if(str[i]>='F'&&str[i]<='Z')
str[i]=str[i]-5;
else if(str[i]>='A'&&str[i]<='E')
str[i]=str[i]+21;
}
puts(str);
}
}
return 0;
}
反思
1.注意strcmp的使用。
2.要先输出结果再输出END。