站外题求助 凯撒密码
  • 板块灌水区
  • 楼主Huchangzhi
  • 当前回复40
  • 已保存回复40
  • 发布时间2023/7/21 15:37
  • 上次更新2023/11/3 08:25:39
查看原帖
站外题求助 凯撒密码
1031975
Huchangzhi楼主2023/7/21 15:37

凯撒加密

背景:

凯撒加密是罗马皇帝凯撒发明了一种加密字母的方法,例如:

明文:HELLO
密文:KHOOR
密钥:3 R

加密的过程是,给出的密钥是3 R,那么对于明文中的每个字母,按字母表顺序往右数3位,比如“H”往右数3位就是“K”,“E”往右数3位就是“H”,"HELLO"按此方法加密后得到的就是密文"KHOOR"

题目要求:

给出一段密文(加密后的文字)和密钥,请翻译成明文(加密前的文字)。

输入:

第一行,一串字符表示密文(大写字母构成,长度不超过100) 第二行,由整数n和字母k构成的密钥,其中k的值为L表示往字母表左边数n位,R表示往右边数,0<=n<=20

输出:

输出仅一行,表示解密后的明文

样例输入:

CZGGJ
5 L

样例输出:

HELLO

我的代码是:

#include<iostream>
#include<string>
using namespace std;
int main() {
	string a;
	cin >> a;
	int n;
	char k;
	scanf("%d%c", &n, &k);
	if (k == 'L') {
		for (char b : a) {
			b = (((int)b -'A' - n) % 26 + 'A');
			printf("%c", b);
		}
	} else {
		for (char b : a) {
			b = (((int)b - 'A' - n) % 26 - 'A');
			printf("%c", b);
		}
	}
	return 0;
}

一直WA

2023/7/21 15:37
加载中...