列表

详情


NC214818. 凯撒加密

描述

某蒟蒻西南城角同学迷上了“算法导论”,有一天登陆时忘记密码了(他没绑定邮箱or手机),于是便把问题抛给了神犇你。

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

输入描述

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

输出描述

一行,是此蒟蒻的密码

示例1

输入:

1
qwe

输出:

rxf

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 3ms, 内存消耗: 340K, 提交时间: 2022-01-11 17:01:21

#include <stdio.h>
int main(){
	int n;
	char s[51];
	scanf("%d %s",&n,s);
	int i=0;
	while(s[i]!=0){
		s[i]='a'+(s[i]+n-'a')%26;
		i++;
	}
	printf("%s",s);
	return 0;
} 

C++(clang++11) 解法, 执行用时: 7ms, 内存消耗: 484K, 提交时间: 2021-01-22 14:57:59

#include<cstdio>
int n;
char str[55];
int main()
{
	scanf("%d%s",&n,str);
	for(int i=0;str[i];++i)
	putchar(((str[i]-'a'+n)%26)+'a');
	return 0;
}

Python3 解法, 执行用时: 48ms, 内存消耗: 4524K, 提交时间: 2022-04-04 21:36:37

a,b=int(input()),input()
s='abcdefghijklmnopqrstuvwxyz'
for i in b:
    print(s[(s.index(i)+a)%26],end='')

上一题