题解:P17113 [Algo Beat 009 & MROI-R1] Number Game

· · 题解

题解:P17113 [Algo Beat 009 & MROI-R1] Number Game

传送门

思路

显然如果这个数大于或等于 10,一次操作后一定会变小。

若这个数小于 10,一次操作后不变,该玩家输掉这一局,也就是循环结束的条件。

n 的数位和就是每次加上 n\bmod10,然后 n←⌊\frac{n}{10}⌋,直到 n =0

求胜利者可以维护一个变量记录当前是哪个人在操作。

--- ### 代码 ```cpp void sol() { int n = rd(); int f = 0; while (n >= 10) { int cnt = 0; while (n > 0) { cnt += n % 10; n /= 10; } n = cnt; f ^= 1; } if(f) puts ("S"); else puts("M"); return; } ```