题解:洛谷 P1914 小书童——凯撒密码

【题目来源】

洛谷:P1914 小书童——凯撒密码 - 洛谷

【题目描述】

蒟蒻虽然忘记密码,但他还记得密码是由一个字符串组成。密码是由原文字符串(由不超过 \(50\) 个小写字母组成)中每个字母向后移动 \(n\) 位形成的。z 的下一个字母是 a,如此循环。他现在找到了移动前的原文字符串及 \(n\),请你求出密码。

【输入】

第一行:\(n\)。第二行:未移动前的一串字母。

【输出】

一行,是此蒟蒻的密码。

【输入样例】

1
qwe

【输出样例】

rxf

【算法标签】

《洛谷 P1914 小书童--凯撒密码》 #模拟# #字符串#

【代码详解】

#include <bits/stdc++.h>  // 包含标准库头文件(万能头文件)
using namespace std;      // 使用标准命名空间

int main()
{
    int n;               // 定义变量:字母位移量
    string s;            // 定义字符串:存储待加密的字符串
  
    cin >> n >> s;       // 输入位移量和字符串
  
    // 遍历字符串中的每个字符
    for (int i = 0; i < s.length(); i++) 
    {
        // 判断字符位移后是否仍在字母z范围内
        if (s[i] + n <= 'z') 
        {
            // 直接进行位移
            s[i] += n;
        }
        else 
        {
            // 处理越界情况,使用模运算实现循环位移
            // (n-26)%26 确保位移量在合理范围内
            s[i] = s[i] + (n - 26) % 26;
        }
    }
  
    cout << s;           // 输出加密后的字符串
  
    return 0;            // 程序正常结束
}

【运行结果】

1
qwe
rxf
posted @ 2026-02-16 15:56  团爸讲算法  阅读(1)  评论(0)    收藏  举报