在其他评测网站上过了,测试点数据也过了,暴0求助
查看原帖
在其他评测网站上过了,测试点数据也过了,暴0求助
260387
二鸣同学楼主2020/8/12 11:30
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int s = 1005;
int n, lenkey, lenb;
char key[s], b[s], a[s];
bool flag[s];

int read() {
	char ch = getchar();
	int a = 1, h = 0;
	while (!isdigit(ch)) {
		if (ch == '-') {
			a = -1;
		}
		ch = getchar();
	}
	while (isdigit(ch)) {
		h = h * 10 + ch - '0';
		ch = getchar();
	}
	return a * h;
}

int main() {
	gets(key + 1);
	gets(b + 1);
	int lenkey = strlen(key + 1);
	int n = lenkey;
	int lenb = strlen(b + 1);
	while (lenkey <= lenb) {
		key[++lenkey] = key[lenkey - n];
	}
	for (int i = 1; i <= lenb; i++) {
		if (islower(b[i])) {
			flag[i] = true;
			b[i] = toupper(b[i]);
		}
		if (islower(key[i])) {
			key[i] = toupper(key[i]);
		}
	}
	for (int i = 1; i <= lenb; i++) {
		a[i] = (((b[i] - '@') - (key[i] - '@') + 27) % 26) + '@';
		if (a[i] == '@') {
			a[i] = 'Z';
		}
	}
	for (int i = 1; i <= lenb; i++) {
		if (flag[i]) {
			a[i] = tolower(a[i]);
		}
		printf("%c", a[i]);
	}
	return 0;
}

2020/8/12 11:30
加载中...