1 条题解

  • 0
    @ 2025-8-24 21:16:30

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar chen_zhe
    Aya 敲可爱的~

    搬运于2025-08-24 21:16:29,当前版本为作者最后更新于2024-07-03 18:39:26,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    欢迎报名洛谷网校,期待和大家一起进步!

    本题难点在于进行移位操作。如果我们没有“移位”操作,只输出 ABCD...XYZ,则我们可以书写以下循环。

    for (int i = 1; i <= 26; i++) {
    	char ch = 'A' + (i - 1);
    	cout << ch;
    }
    

    现在有了移位操作,则我们写成 char ch = 'A' + (n + i - 1); 就好了吗?且慢,因为 Z 的后一个是 A。这应当如何处理呢?

    注意到移了 2626 位等于没有移动,移动了 2727 位等于移动了 11 位,移动了 5252 位也等于没有移动……我们可以想到“取模”运算,即使用模运算简化地完成移位操作:

    for (int i = 1; i <= 26; i++) {
    	char ch = 'A' + (n + i - 1) % 26;
    	cout << ch;
    }
    
    • 1

    信息

    ID
    10484
    时间
    1000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者