2071 取石子游戏
来源:互联网 发布:网络代理设置 编辑:程序博客网 时间:2024/06/04 17:56
传说lzx暗地里结交了一个女朋友,今天本来是集训队训练的日子,但是lzx推脱自己有事不能参加,实际上是在陪女朋友玩取石子游戏……
游戏的规则是这样的:
石子一共有两堆,分别有a个和b个石子,两人轮流操作,当轮到自己的回合时,选择一堆石子,然后取走这堆石子里的不超过m个石子,不可以不取,然后变为对手的回合。如果轮到某个人的回合,无石子可取,则这个人输掉这一局游戏。
lzx的女朋友做什么都非常认真,如果输掉任何一局游戏都会很不开心;但同时lzx的女朋友是非常要强的人,她绝不希望lzx在与她的游戏中放水,也就是说,lzx和他的女朋友都会为自己的每一步选择最佳的策略。这下lzx犯难了,他想到的唯一的既让女朋友开心,又不放水的方法,就是把游戏的初始状态设置成让女朋友一定会获胜的情况。于是他自告奋勇的承担了每局比赛设置初始状态的工作……
请你判断,对于已知的a、b、m,以及每局先手操作方,这种情况能否让女朋友必胜呢?
- 输入
输入的第一行是一个整数,为数据的组数t(t<=500),之后t行每行一组数据。
每组数据包括a、b、m三个整数及一个字符串s,之间均用一个空格隔开。a、b、m的含义如题目描述中所示(0<=a,b<=2^63-1,1<=m<=2^31-1),字符串s代表每局的先手操作方。如果lzx先操作,则字符串s为"lzx",如果是lzx的女朋友先操作,则字符串s为"gf"。
- 输出
对于每组测试数据,输出一行:
如果这个初始条件能够使得女朋友最终获胜,lzx逃过一劫,输出一行”Oh yeah!”;否则,lzx就免不了跪搓衣板了,输出一行”Oh my god!”。
- 样例输入
2
1 2 1 gf
1 2 1 lzx
样例输出
Oh yeah!Oh my god!
博弈论的经典问题
#include<iostream>#include<string>using namespace std;int main(){ int t; cin >> t; for ( int e = 0; e < t; e++ ) { long long a, b; int m; cin >> a >> b >> m; int am = a % (m+1); int bm = b % (m+1); string name; cin >> name; if ( name == "lzx" && ((bm ^ am) == 0 )) cout << "Oh yeah!" << endl; else if ( name == "gf" && ((bm ^ am )!= 0 )) cout << "Oh yeah!" << endl; else { cout << "Oh my god!" << endl; } } return 0; }
- 2071 取石子游戏
- "取石子"游戏
- 取石子游戏
- 取石子游戏
- 取石子游戏
- POJ1067取石子游戏
- PKU1067 取石子游戏
- 取石子游戏
- 取石子游戏
- 1067 取石子游戏
- PKU1067(取石子游戏)
- 1679 取石子游戏
- 1773 取石子游戏
- 取石子游戏
- POJ_取石子游戏
- 取石子游戏
- poj1067(取石子游戏)
- 取石子游戏
- 两两组合算法-递归实现方法
- device_register()分析
- Ext 自定义方法(提交)
- LDAP 删除用户信息
- Android 开发中Parcel存储类型和数据容器
- 2071 取石子游戏
- Android 调用系统打紧急电话
- cilk之User Guide学习笔记(2)Cilk关键字预定义宏环境变量
- Puppy linux+WinPE双系统U盘启动
- Android启动过程的深入研究
- 跟我一起写udev规则(译) 收藏
- C# 单问号(?)和双问号(??)用法。
- 先从简单的开始
- fdebug 调试器使用