题目链接 题意 两人轮流将硬币从\((n,m)\)移动到\((1,1)\),每次只能向下或向左或向左下移动一格,最后无法移动者输.问先手会赢还是会输. 思路 找规律 -- P N P N P N P -- N N N N N N N P N P N P N P N N N N N N N P N P N P N P N N N N N N N P N P N P N P 奇数行&&奇数列为必败态 Code #include <bits/stdc++.h> using names…
题目 洛谷传送门 题解 把1/21/21/2转化成0/10/10/1,所以直接可以异或. 对于长度为nnn的0/10/10/1数列,发现每变换2k(k>1)2^k(k>1)2k(k>1)时,且每个数的值就是往左和往右各走2^(k-1)步的值异或起来. 那么把mmm二进制分解一下,最后如果是奇数就多做一次. CODE #include <bits/stdc++.h> using namespace std; typedef long long LL; const int MAX…
题目链接 题意 有\(n\)张牌,两人依次摸牌,每次摸的张数只能是\(2\)的幂次,最后没牌可摸的人为负.问先手会赢还是会输? 思路 0 1 2 3 4 5 6 7 8 9 10 11 -- P N N P N N P N N P N N -- 可归纳出:\(n\%3==0\)时为\(P\),\(n\%3\neq 0\)时为\(N\). 证明: 因为\(2^k\%3\neq 0\), 所以 \(n\%3==0\)只能由\((n-2^k)\%3\neq 0\)转移而来,而\((n-2^k)\%3\…