前言
本题解为第十一届软件类校内模拟赛个人题解,但非官方满分题解,因此,可能存在下列问题
题意理解错误,导致答案错误。
代码中存在一些问题,导致答案错误。
算法复杂度的分析有误,导致不能在规定时间内得出结果。
因报名属于软件类,故本篇题解全部由 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第一条,这里所写的都仅供参考,以大赛官方为准啦,在此摆出以供大佬取其精华,去其糟粕,祝诸位大佬们节节高!