P1914 小书童——凯撒密码

1.题目介绍

小书童——凯撒密码

题目背景

某蒟蒻迷上了 “小书童”,有一天登陆时忘记密码了(他没绑定邮箱 or 手机),于是便把问题抛给了神犇你。

题目描述

蒟蒻虽然忘记密码,但他还记得密码是由一个字符串组成。密码是由原文字符串(由不超过 50 个小写字母组成)中每个字母向后移动 \(n\) 位形成的。z 的下一个字母是 a,如此循环。他现在找到了移动前的原文字符串及 \(n\),请你求出密码。

输入格式

第一行:\(n\)。第二行:未移动前的一串字母。

输出格式

一行,是此蒟蒻的密码。

样例 #1

样例输入 #1

1
qwe

样例输出 #1

rxf

提示

字符串长度 \(\le 50\)\(1 \leq n \leq 26\)

2.题解

2.1 使用求余%来表示循环

思路

这里唯一一个难点当ch+n超出'z'时,如何进行循环?
这里就可以采用偏移量+求余的方式进行
即 (ch - 'a' + n) % 26(偏移量) + 'a'(基值)

代码

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	cin >> n;
	string str;
	cin >> str;
	for(char ch: str){
		ch = (ch - 'a' + n) % 26 + 'a';
		cout << ch; 
	} 
}
posted @ 2024-01-22 16:21  DawnTraveler  阅读(128)  评论(0编辑  收藏  举报