C++9018:1724——MARSER蒟蒻的小游戏
Posted lyw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++9018:1724——MARSER蒟蒻的小游戏相关的知识,希望对你有一定的参考价值。
题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1724
题目描述
闲来无事,MARSER准备和他的好同(ji)学(you)LJN玩个小游戏。
如图,两人把n(0<n<=10^12)个硬币排成一圈,每次玩家可以取1~2枚硬币,但所取的硬币必须连在一起。取完所有硬币的人获胜。当LJN先手,请你判断谁会胜利,分别输出“LJN win!!!”和Marser win!!!“”
输入
一个数n
输出
题目要求的字符串
样例输入
465134
样例输出
Marser win!!!
题目讲解:
这道题居然是一道博弈论的题目,虽然是三四年级小盆友们的奥数题罢了,我们画几个图来解释一下吧:
这是一个硬币:
我们设有4个硬币:,先手LJN先将硬币取走一个(如图所示),这时还剩下3个硬币,此时LJN获胜了,为什么?因为不论MARSER取走1个还是2个硬币,LJN都能取走剩下的2个或1个硬币,因此LJN获胜。
我们设有5个硬币:,先手LJN不取1个了,取走2个,这时还是剩下3个硬币,同上,LJN依然是赢家。
由这两个例子我们可以得出结论,n为硬币个数,如果n-1或者n-2可以被3整除(也就是mod 3 = 0),那么先手LJN获胜,相反假如不能被3整除,则后手MARSER获胜。
不难列出代码:
#include <iostream> using namespace std; int main(){ long long n; // 注意,是long long cin >> n; if (n - 1 % 3 == 0 || n - 2 % 3 == 0) cout << "LJN win!!!"; // 判断 else cout << "Marser win!!!"; }
感谢阅读,点个赞吧~
以上是关于C++9018:1724——MARSER蒟蒻的小游戏的主要内容,如果未能解决你的问题,请参考以下文章