有史以来最困难的问题

有史以来最困难的问题
时间限制: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。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值