本文主要是介绍航行日志的修复(字符串),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
作为CSU宇宙军事学院的全A优等生,你不负众望。在你的精确计算和指挥控制下,MACROSS凭借其主炮的强大威力,成功挫败了Zentraedi舰队一次又一次的进攻。指挥室和甲板上传来一阵又一阵的欢呼声,战事也渐趋平静。但就在格罗巴尔将军叼起了他爱用的烟斗,准备下达全舰修整的命令之时,MACROSS的背后突然产生了强烈的时空跳跃反应,大批飞弹迅猛飞来。幸好此刻洛伊·福克正率领统合军Skull大队在返回MACROSS的途中,成功阻拦了大部分飞弹,但还是有部分流弹击穿了装甲,控制室里传来急促的警报声。
此刻你正检查情报系统受损情况并执行修复任务。很幸运,并没有飞弹击穿情报室的装甲,但情报系统仍然出现了严重的紊乱情况,尤其是航行日志已经面目全非。由于航行日志记载着MACROSS战舰及其船员在航行过程中的各项情况,是舰队指挥官决策的一个重要依据,因此需要你立刻修复。
MACROSS的航行日志由自然语言记录,严格符合英文排版规范,每一行文本的末尾不会出现多余的空格。虽然除了英文字母外还可能会存在着标点符号和空格,但标点仅仅只有","和"."两种情形。经过和部分备份日志比对,你惊喜地发现情况并不是十分糟糕。尽管整体上字符的替换毫无规律,但对于英文字母来说,仅仅是向后移动固定位数的循环替换。然而这……似乎并没有多大帮助……
正当一筹莫展之时,一份英文字母频率表在你的眼前调皮的摆动。耳边随即传来那熟悉的银铃般的声音:“嘻嘻~这下你该怎么感谢我呀!”。
“咦,怎么是你?!”
一份出现紊乱的航行日志文本。
Output经过还原后的原始航行日志文本。
Sample InputXly`hld`mzcy`qcpp(`lyo`pgpcjhspcp`sp`td`ty`nsltyd} Xlyj`l`zyp`mpwtpgpd`stxdpwq`esp`xldepc`zq`zespcd( lyo`jpe`sp`td`l`rcplepc`dwlgp`esly`espj} Szh`sld`estd`nslyrp`nzxp`lmzfe}`T`oz`yze`vyzh} Hsle`nly`xlvp`te`wprtetxlep}`T`mpwtpgp`T`nly`dpeewp`estd`bfpdetzy}Sample Output
Man was born free, and everywhere he is in chains. Many a one believes himself the master of others, and yet he is a greater slave than they. How has this change come about. I do not know. What can make it legitimate. I believe I can settle this question.Hint
输入数据保证不超过100行,单行不超过1000个字符。
数据保证还原后的原始航行日志文本严格符合英文排版规范,且字母频率分布显著。
数据保证所有的拉丁字母只会替换为拉丁字母,标点和空格也只会替换为互不相同的特殊可显符号。
标点符号的处理需要你发挥曾经在CSU宇宙军事学院学习时的机智与大胆。
#include<iostream>
#include<math.h>
#include<stdio.h>
#include<algorithm>
using namespace std;int main()
{string s;while(cin>>s){int len=s.size();char ans[1010];for(int i=0; i<len; i++){if(s[i]>='a'&&s[i]<='z'){if(s[i]-11>='a') ans[i]=s[i]-11;else ans[i]=s[i]-11+26;}if(s[i]>='A'&&s[i]<='Z'){if(s[i]-11>='A') ans[i]=s[i]-11;else ans[i]=s[i]-11+26;}if(s[i]=='`') ans[i]=' ';else if(s[i]=='}') ans[i]='.';else if(s[i]=='(') ans[i]=',';}for(int i=0; i<len; i++){cout<<ans[i];}cout<<endl;}
}
这篇关于航行日志的修复(字符串)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!