一、题目描述
二、分析
既然是放在第一天的第一题,那就多半是模拟了,这道题就是这样。但是还是有几个易错点,注意避免就好了:
1. 是倒着找规律的。
2. 注意秘钥要转大小写。
三、代码
#include<bits/stdc++.h>
using namespace std;
string password,code;
bool judge;
int main()
{
// freopen("vigenere.in","r",stdin);
// freopen("vigenere.out","w",stdout);
cin>>password>>code;
for(int i=0; i<password.size(); i++)
if(password[i]>='a' && password[i]<='z')
password[i]=password[i]-'a'+'A';
int j=0;
for(int i=0; i<code.size(); i++)
{
if(code[i]>='a' && code[i]<='z')
judge=false;
else
judge=true;
code[i] -= password[j]-'A';
if(judge==true && code[i]<'A')
code[i]+=26;
else if(judge==false && code[i]<'a')
code[i]+=26;
j++;
if(j>=password.size())
j%=password.size();
}
cout<<code;
return 0;
}