1 条题解

  • 0
    @ 2026-6-19 10:30:06

    📝 题目大意

    给定整数 NNXX,构造一个由 NNANNB、……、NNZ 依次拼接而成的字符串,求该字符串的第 XX 个字符。

    💡 解题思路

    1. 题目分析:字符串结构非常有规律——每个字母连续出现 NN 次,共 2626 个字母,总长度 26N26NN100N \leq 100,直接模拟也能过,但数学推导更简洁。
    2. 算法推导
      • 将第 XX 个字符(11 索引)转换为 00 索引,即 pos = X - 1
      • 每个字母占据一个长度为 NN 的"块",所以 pos / N 便是该字符属于第几个字母块(00 对应 A11 对应 B,……,2525 对应 Z)。
      • 最终答案即为 'A' + (X - 1) / N
    3. 边界与细节
      • XX 最大为 26N26N,此时 (X-1)/N = 25,对应 'Z',不会越界。
      • 整数除法自动向下取整,恰好符合分块逻辑,无需额外处理。

    ⏱️ 复杂度分析

    • 时间复杂度O(1)O(1)
    • 空间复杂度O(1)O(1)

    💻 标准代码 (C++)

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        int n, x;
        cin >> n >> x;
        // 将 1 索引转为 0 索引,除以 N 得到字母块的编号(0->A, 1->B, ..., 25->Z)
        int index = (x - 1) / n;
        char ans = 'A' + index;
        cout << ans << endl;
        return 0;
    }
    
    • 1

    信息

    ID
    602
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者