【藍橋】軟件校內模擬賽(二)凱撒密碼加密 題目+題解

前言

本題解爲第十一屆軟件類校內模擬賽個人題解,但非官方滿分題解,因此,可能存在下列問題

題意理解錯誤,導致答案錯誤。
代碼中存在一些問題,導致答案錯誤。
算法複雜度的分析有誤,導致不能在規定時間內得出結果。
因報名屬於軟件類,故本篇題解全部由 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第一條,這裏所寫的都僅供參考,以大賽官方爲準啦,在此擺出以供大佬取其精華,去其糟粕,祝諸位大佬們節節高!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章