题解
2026-02-26 12:55:18
发布于:浙江
2阅读
0回复
0点赞
题目解析
- 输入输出:输入一个正整数 ()表示偏移量。输出一行字符串,表示将标准大写字母表
ABCDEFGHIJKLMNOPQRSTUVWXYZ每个字母向后偏移 位后的结果(循环移位,即Z偏移后接A)。 - 数据范围:,偏移量可能大于 26,需要取模处理。
- 复杂度要求:仅需处理 26 个字母,时间复杂度 ,即 。
- 算法知识点:
模运算、ASCII码转换、循环移位
思路解析
- 建立映射关系:将字母
A到Z映射为数字 到 。对于第 个字母(从 0 开始计数),偏移后的新位置为 。 - 处理循环特性:由于字母表是首尾相接的环,使用取模运算
% 26自动处理越界情况。例如Z(对应 25)偏移 3 位:,对应C。 - 转换回字符:将计算得到的数字(0-25)加上
'A'的 ASCII 码值,转换回对应的大写字母并输出。
完整代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int diff;
cin >> diff;
// 遍历26个大写字母,i=0对应'A',i=25对应'Z'
for (int i = 0; i < 26; i++) {
// 计算偏移后的位置:当前位置+偏移量,对26取模实现循环
int x = (i + diff) % 26;
// 将数字0-25转换为字符'A'-'Z'
cout << char(x + 'A');
}
return 0;
}
这里空空如也

有帮助,赞一个