1 条题解

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

    📝 题目大意

    给定一个整数 KK1K261 \le K \le 26),输出从 A 开始按升序连接的前 KK 个大写英文字母组成的字符串。

    💡 解题思路

    1. 题目分析KK 最大为 2626,恰好对应全部大写字母的数量。因此无论如何输入,答案都在合法范围内,无需考虑越界。
    2. 算法推导
      • 读入 KK(代码中变量名为 a)。
      • 维护一个偏移量 b,初始为 00,表示当前应输出的字母相对于 'A' 的 ASCII 偏移。
      • 循环 KK 次(i11a),每次输出 'A' + b,随后 b 自增 11
      • 等价于依次输出 ABC、……、第 KK 个字母。
    3. 边界与细节
      • K=1K = 1 时输出 A,循环仅执行一次,符合题意。
      • K=26K = 26 时输出 AZ 的全部字母,循环执行 2626 次,不会越界。
      • 使用 printf("%c", ...) 逐个字符输出,避免字符串拼接开销。

    ⏱️ 复杂度分析

    • 时间复杂度O(K)O(K),仅需一次循环遍历 KK 个字母。
    • 空间复杂度O(1)O(1),只使用了常数个变量。

    💻 标准代码 (C++)

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        int a, b = 0;       // a 存储输入 K,b 为当前字母相对于 'A' 的偏移量
        cin >> a;           // 读入 K
        for(int i = 1; i <= a; i++){   // 循环 K 次
            printf("%c", 'A' + b);      // 输出当前字母('A' + 偏移量)
            b++;                        // 偏移量增加,指向下一个字母
        }
        return 0;
    }
    
    • 1

    信息

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