P1079 Vigenère 密码 (简单模拟&字符串)
题意:给出密钥和密文求明文。
思路:分两种情况:每种情况又分大小写两种情况即可。大小写可以用toupper( ),tolower( )实现。ps:看起来花里胡哨的。
AC代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
string a,b,c;
cin>>b>>c;
int lb=b.size(),lc=c.size();
for(int i=0;i<lc;i++){
if(toupper(c[i])>=toupper(b[i%lb])){
if(c[i]>='A')
printf("%c",'A'+(c[i]-toupper(b[i%lb])));
else printf("%c",'a'+(c[i]-tolower(b[i%lb])));
}
else {
if(c[i]>='A')
printf("%c",c[i]+('Z'-toupper(b[i%lb])+1));
else printf("%c",c[i]+('z'-tolower(b[i%lb])+1));
}
}
return 0;
}