1 条题解

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

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar icypenguin
    **

    搬运于2025-08-24 21:16:02,当前版本为作者最后更新于2024-02-20 17:20:40,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    Source & Knowledge

    2024 年 2 月语言月赛,由洛谷网校入门计划/基础计划提供。

    出题人题解。

    题目大意

    有一个串,反复对其做翻转或者反转操作,你需要求出这些操作做完后的串。

    题目分析

    本题考查对字符串、数组、循环结构的运用。

    我们很容易发现,反转两次和翻转两次的结果都不变,并且这两个操作相互独立。于是我们统计反转的次数与翻转的次数。如果反转的次数是一个奇数,那么相当于反转了 11 次,直接模拟这个操作即可;如果反转的次数是一个偶数,相当于没有反转,不进行任何操作。如果翻转的次数是一个奇数,那么相当于翻转了 11 次,直接模拟这个操作即可;如果翻转的次数是一个偶数,相当于没有翻转,不进行任何操作。

    cin >> n >> q;
    for (long long i = 1; i <= n; i++){
        cin >> s[i];
    }
    for (long long i = 1; i <= q; i++){
        char w;
        cin >> w;
        if (w == '1'){
            cnt[1]++;
        }else{
            cnt[2]++;
        }
    }
    if (cnt[1] % 2 == 1){
        ll ct = 1;
        for (long long i = n; i >= 1; i--){
            s2[ct] = s[i];
            ct++;
        }
        for (long long i = 1; i <= n; i++){
            s[i] = s2[i];
        }
    }
    if (cnt[2] % 2 == 1){
        for (long long i = 1; i <= n; i++){
            if (s[i] == '1'){
                s[i] = '0';
            }else{
                s[i] = '1';
            }
        }
    }
    for (long long i = 1; i <= n; i++){
        cout << s[i];
    }
    

    视频题解

    • 1

    信息

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