#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<=b;i++)
typedef long long LL;
int main()
{
string k;
string x;
string res;
cin>>k>>x;
for(int i=0;i<x.size();i++)
{
int j=i%(k.size());
if(x[i]>='a'&&x[i]<='z')
{
if(k[j]>='a'&&k[j]<='z')
{
res.push_back('a'+(x[i]-'a'-k[j]+'a'+26)%26);
}
else res.push_back('a'+(x[i]-'a'-k[j]+'A'+26)%26);
}
else{
if(k[j]>='a'&&k[j]<='z')
{
res.push_back('A'+(x[i]-'A'-k[j]+'a'+26)%26);
}
else res.push_back('A'+(x[i]-'A'-k[j]+'A'+26)%26);
}
}
cout<<res;
}
算法概论-作业3-席景科老师 D Vigenère 密码
最新推荐文章于 2025-12-04 22:00:44 发布
这篇博客介绍了一种使用C++实现的字符串加密方法,通过凯撒密码对输入字符串进行字符替换,根据给定密钥k进行字母移位。它展示了如何处理小写字母和大写字母的转换,并通过取模运算保持字符在字母表内的循环。
501

被折叠的 条评论
为什么被折叠?



