[语言月赛202303] Factorial B 题解
[语言月赛202303] Factorial B 题解
Source & Knowledge
2023 年 3 月语言月赛,由洛谷网校入门计划/基础计划提供。
本题考察循环结构。
文字题解
题目大意
小 F 和小 B 玩游戏。小 F 有一个数字
从小 F 开始,双方轮流操作。在某次操作中,如果自己手上的数比对方的数小,就把自己的数加一,否则把自己的数改为除以二并向下取整。
当一方的数字为
解析
依照题意模拟即可。这是一个轮数不固定的循环,可以采用 while 循环来处理,其语句是 while (A) B,表示当语句 A 成立时不停执行语句(块)B。
在本题中,循环继续的条件是 &&)链接。可以用一次 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
}
最后输出
视频题解
完整代码请在视频中观看。