专栏文章

题解:P1914 小书童——凯撒密码

P1914题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mip56uul
此快照首次捕获于
2025/12/03 06:21
3 个月前
此快照最后确认于
2025/12/03 06:21
3 个月前
查看原文

题目大意

某蒟蒻给出了一个由小写字母组成的字符串和一个整数 nn,要求将字符串中的每个字母向后移动 nn 位(注意 zz 的下一个字母是 aa,如此循环),生成新的字符串就是密码,进行输出。

分析

我这里给出一个字符数组解法,定义字符数组 aa 存储字符串,遍历字符串中的每个字符, 对每个字符的 ASCLL 码值加上 nn 计算新的 ASCLL 码值。如果当前字符加 nn 超过了 122122 也就是小写字母 zz 的 ASCLL 码值,则:
  1. (a[i]+n) 除以 122122 取余数。
  2. 然后加上 'a'-1 (即 9696 )。

代码

CPP
#include<bits/stdc++.h>
using namespace std;
string str,s;
int main(){
	char a[55];
	int n;
	cin>>n;
	cin>>a;
	for(int i=0;i<strlen(a);i++){
		if(a[i]+n>122){
			a[i]=(a[i]+n)%122+'a'-1;
		}else{
			a[i]+=n;
		}
	}
	cout<<a;
	return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...