1 条题解

  • 0
    @ 2025-8-24 21:14:38

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 一扶苏一
    休息结束。邮箱 yifusuyi@qq.com

    搬运于2025-08-24 21:14:37,当前版本为作者最后更新于2018-05-10 18:21:36,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    [语言月赛202303] Factorial B 题解

    Source & Knowledge

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

    本题考察循环结构。

    文字题解

    题目大意

    小 F 和小 B 玩游戏。小 F 有一个数字 xx,小 B 有一个数字 yy

    从小 F 开始,双方轮流操作。在某次操作中,如果自己手上的数比对方的数小,就把自己的数加一,否则把自己的数改为除以二并向下取整。

    当一方的数字为 00 时,游戏结束。求结束时双方手里的数字。

    解析

    依照题意模拟即可。这是一个轮数不固定的循环,可以采用 while 循环来处理,其语句是 while (A) B,表示当语句 A 成立时不停执行语句(块)B

    在本题中,循环继续的条件是 xxyy 均不为 00,应把两数不为零的语句用逻辑与(&&)链接。可以用一次 while 循环来模拟一轮(双方各操作一次)游戏。

    while (x != 0 && y != 0) {
      if (x < y) ++x;
      else x >>= 1;   // 这句话等价于 x /= 2
      if (x == 0) break;  // 注意小 F 操作完后如果数字已为 0 则需要即时停止。
      if (x > y) ++y; 
      else y >>= 1;  // 这句话等价于 y /= 2
    }
    

    最后输出 xxyy 即可。

    视频题解

    完整代码请在视频中观看

    • 1

    信息

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