#include<bits/stdc++.h>
using namespace std;
char m_en(char x,char y);
char m_de(char v,char y);
int main(){
string key,val;
int kp=0;
getline(cin,key);
getline(cin,val);
for(int i=0;i<val.length();i++){
if(kp==key.length()){
kp=0;
}
val[i]=m_de(val[i],key[kp++]);
//val[i]=m_en(val[i],key[kp++]);
}
cout<<val<<endl;
}
char m_en(char x,char y){
int offset=isupper(x)?'A':'a';
return (toupper(x)+toupper(y))%26+offset;
}
char m_de(char v,char y){
int offset=isupper(v)?'A':'a';
return (26+toupper(v)-toupper(y))%26+offset;
}
so,解密注释掉了,玩的时候注意kp++。
加密:保存大小写,计算坐标,限定范围,转换为对应大小写
解密:保存大小写,保证范围,转化为对应的大小写