题目描述
在热心网友的帮助下,小Z顺利进入了“小云雀”运动场,运动场的盛况让小Z不由自主的发出惊叹。比赛项目种类繁多,令小Z眼花缭乱,但其中一项叫“定向越野”的项目深深把他吸引住了。“定向越野”规则如下:比赛开始前,裁判将分发给每位参赛选手n张密码条以及一张解密条一张解密条,每张密码条上对应一串字符一串字符,
字符串由大小写字母及空格大小写字母及空格组成,选手需要根据解密条的内容对密码条进行解密,若解密正确,裁判将指引选手前往下一处地点完成指定任务。率先完成所有任务的挑战者,将会获得最终的大奖。酷爱挑战的小Z毫不犹豫的参加了这个项目,他拿到的解密条如下:
1)对于所有的密码条,需要对其字母字符进行大小写翻转字母字符进行大小写翻转
2)对于第i条密码条ai,需要对ai的每个字符(空格字符除外),用往右的第i个字符替代,字符z和Z的下一个字符为a和A。
学过编程的小Z同学,很快就把此密码条解密了。同样擅长编程的你,能告诉我,用编程该如何实现吗?
输入格式
共n+1行
第一行为一个正整数n,表示密码条的条数
接下来n行,每行一串字符串,表示第ai条密码条
输出格式
共n行,每行一串字符串表示解密后的密码
样例
输入数据
2
fNNC fNNC rSTCX
bYW bYW sN
输出数据
Good Good Study
Day Day Up
代码
直接模拟!!!
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
string s;
cin>>n;
getline(cin,s);
for(int i=1;i<=n;i++){
getline(cin,s);
int len=s.size();
for(int j=0;j<len;j++){
if(s[j]>='a'&&s[j]<='z'){
s[j]-=32;
if(s[j]+i>'Z')
s[j]=s[j]+i-26;
else
s[j]+=i;
}
else if(s[j]>='A'&&s[j]<='Z'){
s[j]+=32;
if(s[j]+i>'z')
s[j]=s[j]+i-26;
else
s[j]+=i;
}
}
cout<<s<<endl;
}
return 0;
}