```cpp
#include<iostream>
using namespace std;
string C,M,k;
int tmp;
int main()
{
getline(cin,k);
getline(cin,C);
for(int i=0;i<k.size();i++)
{
if(k[i]>='A'&&k[i]<='Z')
{
k[i]+=32;
}
}
for(int i=0;i<C.size();i++)
{
if(C[i]>='A'&&C[i]<='Z')
{
if(C[i]-(k[tmp]-97)<65)
{
M+=(char)(C[i]-(k[tmp]-97)+26);
}
else
{
M+=(char)(C[i]-(k[tmp]-97));
}
}
else
{
if(C[i]-(k[tmp]-97)<97)
{
M+=(char)(C[i]-(k[tmp]-97)+26);
}
else
{
M+=(char)(C[i]-(k[tmp]-97));
}
}
tmp++;
if(tmp==k.size())
{
tmp=0;
}
}
cout<<M<<endl;
return 0;
}
```
看一下我的,注意,我的代码有部分地方写复杂了,可以自行改一改,不懂可以私信问我
by Rieman_sum @ 2023-12-04 19:17:28
@[Guo1](/user/743879) 谢谢
by Star_Sky_ @ 2023-12-05 14:51:29
话说最简单的是我这个吧:
```cpp
#include<bits/stdc++.h>
using namespace std;
char s[1011],m[1011],k[111];
void ss(){
int mod=strlen(k);
for(int i=0;i<strlen(m);i++){
bool q=1;
if(m[i]<='Z')
q=0;
if(q)
m[i]-=32;
if(k[i%mod]>'Z')
k[i%mod]-=32;
s[i]=m[i]-k[i%mod]+26;//小的-大的会成负数
s[i]%=26;
if(!q)
cout<<char(s[i]+'A');
else
cout<<char(s[i]+'a');
}
}
int main(){
cin>>k>>m;
ss();
return 0;
}
```
by yhdxg @ 2023-12-23 11:38:31