【蓝桥】软件校内模拟赛(二)凯撒密码加密 题目+题解

前言

本题解为第十一届软件类校内模拟赛个人题解,但非官方满分题解,因此,可能存在下列问题

题意理解错误,导致答案错误。
代码中存在一些问题,导致答案错误。
算法复杂度的分析有误,导致不能在规定时间内得出结果。
因报名属于软件类,故本篇题解全部由 C++ 语言完成,第一次进行校内模拟,没有想到无法查看题目,且木得官方题解,因此题目名称是根据问题描述总结(已忘记题目原名称qwq)。

因此蒟蒻在此提供思路为主,附有非题解代码,如有出错(很有可能)欢迎大佬们指正,祝大佬们们在正赛中取得好成绩。

凯撒密码加密

题目描述

给定一个单词,请使用凯撒密码将这个单词加密。
  凯撒密码是一种替换加密的技术,单词中的所有字母都在字母表上向后偏移3位后被替换成密文。即a变为d,b变为e,…,w变为z,x变为a,y变为b,z变为c。
  例如,lanqiao会变成odqtldr。

  
输入格式
  输入一行,包含一个单词,单词中只包含小写英文字母。
输出格式
  输出一行,表示加密后的密文。
样例输入
lanqiao
样例输出
odqtldr
评测用例规模与约定
  对于所有评测用例,单词中的字母个数不超过100。

思路:

题目已经很明显给出提示,a~w字母统一都+3,xyz单独处理-23即可加密

代码:

#include<bits/stdc++.h>
typedef long long ll;
const int inf = 10000000 + 10;
const int sz = 100010;
using namespace std;
#define ri register int
inline void rd(int &x){
    
    
	char c=getchar();bool f=0;x=0;
	while(c>'9'||c<'0'){
    
    if(c=='-')f=1;c=getchar();}
	while(c<='9'&&c>='0'){
    
    x=x*10+c-'0';c=getchar();}
	if(f) x*=-1;}
inline void we(int x){
    
    
	if(x<0) putchar('-'),x*=-1;
	if(x/10) we(x/10);
	putchar(x%10+'0');}
int n,t;
int ans,sum,num;
string s;
int main()
{
    
    
 	//std::ios::sync_with_stdio(false);
	cin>>s;int len=s.length();
	for(ri i=0;i<len;++i)
	{
    
    
		if(s[i]<='w'&&s[i]>='a')
			s[i]+=3;
		else
			s[i]-=23;
	}
	for(ri i=0;i<len;++i)
	cout<<s[i];
	return 0;
}

方法千万条,AC第一条,这里所写的都仅供参考,以大赛官方为准啦,在此摆出以供大佬取其精华,去其糟粕,祝诸位大佬们节节高!

猜你喜欢

转载自blog.csdn.net/qq_36693514/article/details/105613148