题目描述
你和一个朋友玩Nim游戏:桌上有一堆石子,每次你们可以拿走1-3枚石子,交替进行。拿走最后一枚石子的玩家获胜。你是先手。
你们两名玩家都非常聪明,每次都会选择最优玩法。请编写一个函数,判断给定 nn 枚石子时,你能否获胜。
样例
输入:4
输出:false
解释:一共有4枚石子,你必败。不管第一次你取多少石子,
第二次你的对手都可以取走剩下的所有石子。
思路
如果是4的倍数,你无法获胜,因为你俩都很聪明,对面凑够4就一定赢,如果不是你抓一个补成4的倍数,相当于你就是前面的4倍数的情况下你的对手的情况了,一定赢
class Solution {
public:
bool canWinNim(int n) {
return n%4;
}
};