#YC288. 密码翻译操作基础

密码翻译操作基础

题目背景

简单加密算法,通常是直接让字母,进行大小写转换或者直接按字母表循环移位。

注:什么是循环移位?本身字母表是一个排列,现在我们把字母表看作一个环,从A出发,每+1便变成了B,C...Z。到Z后再+1就相当于环走了一圈,重新回到A

如果是大写字母表,加密方式是循环移位+3 (循环右移)
那么A就变为D;
那么B就变为E;
那么C就变为F;
那么D就变为G;
。。。
那么W就变为Z;
那么X就变为A;
那么Y就变为B;
那么Z就变为C;
公式表达
	char s;
	cin>>s;
	cout<<char('A'+(s-'A'+3)%26);
原理:涉及到循环往复的,我们从0作为起点,然后去%多少个一次轮回就行了

拓展: 加密方式如果是+x,也同样适用,建议给x先%26 

----------------------------------------------------

  如果是大写字母表,加密方式是循环移位-3 (循环左移)
那么A就变为X;
那么B就变为Y;
那么C就变为Z;
那么D就变为A;
。。。
那么Y就变为V;  
那么Z就变为W;
公式表达
	char s;
	cin>>s;
	cout<<char('A'+(s-'A'-3+26)%26);//减法取余一定要加一个模数,防止为负
原理:涉及到循环往复的,我们从0作为起点,然后去%多少个一次轮回就行了

拓展: 加密方式如果是-x,也同样适用,建议给x先%26 


题目描述

请你仔细阅读上述材料完成本题。 对于给定的字符串SS以及一些操作请完成密码翻译工作。

输入

第一行输入一个字符串SS,保证SS不含有空格,且长度不超过2000

第二行两个整数opopxx

opop要么为00,要么为11

(1x1000)(1 \leq x \leq 1000)

opop0时,请对整个SS中所有大写小写字母,按字母表循环xx个位置

opop1时,请对整个SS中所有大写小写字母,按字母表循环xx个位置

输出

输出加密后的字符串

样例

abcdeABCDE
0 4
efghiEFGHI