TB椰程 TypeBuddy 打字搭子

小书童——凯撒密码

洛谷·深入浅出 · 代码 · cpp · 难度 1/5 · 共 416 字

每个字母向后移 n 位,z 后回到 a

  • 洛谷
  • 例题

正文

// 原题:https://oj.yecheng.tv/p/1415
// 题意:第一行 n,第二行原文字符串(全小写)。每个字母向后移动 n 位,z 的下一个是 a,输出密码。
// 思路:对每个字母,先算出相对 'a' 的偏移,加上 n 后对 26 取模,再变回字母。
// 复杂度:O(n)。
// 易错点:循环移位用 %26 而不是简单 +n;'a' 的 ASCII 偏移要减回来。
#include <iostream>
#include <string>
using namespace std;
int main(){
    int n;
    string s;
    cin >> n >> s;
    for(char &c : s){
        c = (c - 'a' + n) % 26 + 'a';
    }
    cout << s << endl;
    return 0;
}

洛谷·深入浅出的其它内容

打字首页 · 词库画廊 · 编程打字 · 指法入门 · 天梯榜 · 数据分析 · 班级课堂 · 关于我们
椰程 TypeBuddy 打字搭子 —— 键盘指法练习 · 单词记忆 · 班级课堂 · 在线 PK