TOJ 127

TOJ 127

題目

https://toj.tfcis.org/oj/pro/127/

凱薩加密

給一個數字 $n$ 以及一個字串 $S$ ,求將字串 $S$ 中的所有字元 $c$ 逆回 $n$ 之後的字串

想法

首先考慮到如果 $n$ 大於 26 的情況,其實跟 $n%26$ 是相同的,所以先處理 $n$

接下來針對每個字元處理位移量

如果超出範圍,可以保證只需要再加上一個 26 就可以得到答案

否則直接扣掉 $n$ 即可

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//By Koios1143
#include<iostream>
using namespace std;
int main(){
int n;
string s;
cin>>n>>s;
n%=26;
for(int i=0 ; i<s.size() ; i++){
if(s[i]-n < 'A')
s[i]=s[i]-n+26;
else
s[i]=s[i]-n;
}
cout<<s<<"\n";
return 0;
}

複雜度分析

總時間複雜度為 $O(len(s))$