#include<bits/stdc++.h>
using namespace std;
string key, c, m;
char a[795];
int main() {
cin >> key >> c;
int len = c.length();
int len2 = key.length();
if (len2 < len) {
while (len2 < len) {
key += key;
len2 = key.length();
}
}
for (int i = 0; i < len; i++) {
if ('Z' >= c[i] && c[i] >= 'A') {//大小写要区分
if (key[i] >= 'a' && key[i] <= 'z')key[i] -= 32;
a[0] = key[i];
for (int j = 1; j < 26; j++) {
a[j] = a[j - 1] + 1;
if (a[j] > 'Z')a[j] = 'A' + (a[j]-'A') % 26;
}
for (int v = 0; v < 26; v++) {
if (a[v] == c[i]) {
m = 'A' + v;
break;
}
}
} else {
if (key[i] >= 'A' && key[i] <= 'Z')key[i] += 32;
a[0] = key[i];
for (int j = 1; j < 26; j++) {
a[j] = a[j - 1] + 1;
if (a[j] > 'z')a[j] = 'a' + (a[j]-'a') % 26;//如果超过
}
for (int v = 0; v < 26; v++) {
if (a[v] == c[i]){
m = 'a' + v;
break;
}
}
}
cout<<m;
}
return 0;
}
P1079 [NOIP2012 提高组] Vigenère 密码
最新推荐文章于 2024-06-14 09:55:36 发布