【题目描述】
上一次,小猴的加密方式很快就被破解掉了,后来他学习了一个很经典的加密方式——“凯撒密码”,可是他觉得这个也很容易就会被别人破解,所以他决定创造一种”猴氏撒密码”。
和”凯撒密码”一样,”猴氏撒密码撒密码”也是利用字母向后偏移来实现的,但是他觉得偏移值如果固定的话也很容易被人破解,所以在加密后还会把这个字母再加上偏移值个数,例如 “” 在偏移值为 时,会被加密为 ““。如果保证明文中相邻字母加密后的字母不会相同,现在给出你一个加密后的结果,你能把明文找出来
【输入格式】
第一行一个仅由小写字母组成的的字符串 s,表示加密后的结果。
【输出格式】
一个字符串表示加密前的明文。
【输入输出样例#1】
输入#1
aaadddd
复制
输出#1
ya
复制
【输入输出样例#2】
输入#2
hhrrrrppd
复制
输出#2
good
复制
【输入输出样例#3】
输入#3
lucky
复制
输出#3
lucky
复制
【说明提示】
样例 1 解释:
“” 连续的 个 表示偏移值是 ,所以对应的明文就是 ;
“” 连续的 4 个 表示偏移值是 ,所以对应的明文就是 ;
因此 “” 对应的明文是 ““。
【数据范围】
对于 的数据:
【代码样例】
#include <bits/stdc++.h>
using namespace std;
string s;
char a;
int cnt;
int main(){
cin>>s;
a=s[0];
cnt=0;
for(int i=1;i<=s.size();i++){
if(a==s[i]){
cnt++;
}
else{
if((a-cnt)<'a') {
cout << char((a-cnt-'a'+1)%26+'z');
} else {
cout<<char(a-cnt);
}
a=s[i];
cnt=0;
}
}
}