第一题 Vigenère 密码 要考虑的就是密钥k的长度问题,如果k的长度不够,我们需要把k不断的从第一个开始往后拼,直到拼到密文的长度,便于我们进行处理; 注意ASCLL码的转换,大小写中相差多少 #include<bits/stdc++.h> using namespace std; char aa[10001],bb[10001],ans[10001]; bool check(int x) { if(x>='a' && x<='z')return true; return false; } int main() { string t,k; cin>>k>>t; int lk=k.length(),lt=t.length(); for(int i=0;i<lk;i++) aa[i]=k[i]; for(int i=0;i<lt;i++) bb[i]=t[i]; for(int i=0,j=0;i<lt;i++,j++) { if(j==lk)j=0; if(check(bb[i])) { if(!check(aa[j]))aa[j]+='a'-'A'; ans[i]=bb[i]-aa[j]+'a'; if(ans[i]<'a')ans[i]+=26; } if(!check(t[i])) { if(check(aa[j]))aa[j]+='A'-'a'; ans[i]=bb[i