计蒜客-取石子(简单的博弈)

题目:

蒜头君和花椰妹今天都很无聊。两个人相约一起玩游戏。

蒜头君取出了一堆奇形怪状的石子,并且把它分成了三堆。他和花椰妹轮流从里面取石子,取出最后一颗石子的人胜利。花椰妹觉得这样没意思,于是她要求加入一个限制条件:每个人每次只能取出 1,3,71,3,7 或 99 颗石子。石子数目不够的时候不能多取,如还剩 22 颗石子的情况下,只能拿走 11 颗,而不能选择 3,7,93,7,9。蒜头君答应了,但是他要让花椰妹先拿。

已知蒜头君和花椰妹都很聪明,总是会做出最好的拿石子办法。现在你能知道,花椰妹究竟能不能赢吗?

输入格式
共一行,包括三个整数 n,mn,m 和 kk (1 \leq n, m, k \leq 10001≤n,m,k≤1000),代表三堆石子的数目。

输出格式
如果花椰妹能赢,则输出"win";否则则输出"lose"。

样例输入1
2 3 4
样例输出1
win
样例输入2
2 3 5
样例输出2
lose

这道题涉及到简单的博弈思想,只需要考虑石子的总数是否为2的倍数即可,如果是2的倍数,那么当先手先取的石子后,后手始终保持取出来的石子与先手刚取出来的石子的和为2的倍数即可,那么这样在两人用最佳的战略下,后手一定赢;相反,如果石子的总数不是2的倍数,那么先手可以先取得单数石子之后,在后手取石子后,始终与后手之和为偶数即可

满分代码如下:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,m,k;
	scanf("%d%d%d",&n,&m,&k);
	if((n+m+k)%2==0) cout<<"lose"<<endl;
	else cout<<"win"<<endl;
	return 0;
} 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值