百练OJ 情报破译-Cryptanalysis(字符串加密解密+串逆序+单词处理)

情报破译-Cryptanalysis
总时间限制: 1000ms 内存限制: 65536kB

描述
A国和B国正在进行一场战争。A国通过间谍知道B国的情报加密规则为:
1. 仅对字母加密,其他符号保留(如空格,逗号等)
2. 对第i个单词(i从1开始)的加密方法是把第i个单词反转(如abc变成cba),然后对单词内的每个字母采用经典的Caesar加密法,循环后移i个字母。例如:第5个单词的加密表如下所示:

密码字母: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

  1. 单词的定义是:任何一串极大的连续字母串。
    比如,样例输出第三行,第二个单词为ba,反转后为ab,a后移2个单词变成c,b后移两个单词变成d,故该单词加密后为cd(见样例输入第三行)。
    现在A国又截获了一些B国的情报密文。请你帮A国破译出情报的内容。

输入
一共有不超过int范围行,每行为一个字符串(int范围)。注意,每行是可以以空格开头的。

输出
情报破译后得到的内容。每条情报对应输出一行。

样例输入
fiU umncv oolz ioex jhfqu, zg uh zqI nlaxO ockl yz kmpzgE.
fX gxcj , ghlsxffr cxmG K.
ab3cd

样例输出
The talks will take place, at an Air Force base on Sunday.
We have , occupied City F.
az3ba

【分析】字符串处理问题
该题综合了字符串加密解密、串的逆序和“单词”处理三部分内容。分以下三步进行:
1. 找极大连续字母串(单词),可设定两个”伪指针”sindex和eindex,[sindex, eindex)范围内的字符即找到的单词
2. 把找到的第i个单词反转(串的逆序,在这里处理的是单词)
3. 采用经典的Caesar加密法,根据表中规律完成解密

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值