King_xjl
2022-05-03 20:28:36
题面:P1079
解析:一道纯模拟题。但是处理时比较复杂。我做了两个小时。
要注意
代码:
#include <bits/stdc++.h>
using namespace std;
char k[1001], a1[1001], ans[1001];
int main()
{
//freopen("vigenere.in", "r", stdin);
//freopen("vigenere.out", "w", stdout);
cin >> k >> a1;
for(int i = 0, kk = 0; i <= strlen(a1) - 1; i++) {
int a11 = 0;
if(a1[i] >= 'a' && a1[i] <= 'z') {
a11 += a1[i] - 'a'; ans[i] = 'a';
}
if(a1[i] >= 'A' && a1[i] <= 'Z') {
a11 += a1[i] - 'A'; ans[i] = 'A';
}
if(k[kk] >= 'a' && k[kk] <= 'z') {
a11 -= k[kk] - 'a';
}
if(k[kk] >= 'A' && k[kk] <= 'Z') {
a11 -= k[kk] - 'A';
}
kk = (kk + 1) % strlen(k);
printf("%c", ans[i] + (a11 + 26) % 26);
}
return 0;
}
/*
CompleteVictory
Yvqgpxaimmklongnzfwpvxmniytm
*/