Vijos 1655萌萌的糖果||博弈
来源:互联网 发布:淘宝助理5.5使用教程 编辑:程序博客网 时间:2024/04/28 22:14
https://vijos.org/p/1655
**
背景
**
用糖果来引诱小朋友学习是最常用的手法,绵羊爸爸就是用糖果来引诱萌萌学习博弈的。
**
描述
**
他把糖果分成了两堆,一堆有A粒,另一堆有B粒。他让萌萌和他一起按照下面的规则取糖果:每次可以任意拿走其中一堆糖果;如果这时候另一堆糖果数目多于1粒,就把它任意分成两堆,否则就把剩下的一粒糖果取走并获得这次博弈的胜利。胜利者将获得所有的糖果。萌萌想要得到所有的糖果,而绵羊爸爸想把糖果留下以便下一次利用。现在由萌萌先取糖果,旁观的小朋友们想知道萌萌是否有必胜策略。
格式
**
输入格式
**
本题有多组测试数据(不超过100组)。每组数据包括两行,第一行为A,第二行为B。1 ≤ A,B ≤ 2^127。输入数据以一个 -1 结束。
**
输出格式
**
每组数据对应一行输出。如果萌萌获胜则输出”MengMeng”,否则输出”SheepDaddy”(不包括引号)。
样例1
**
重点内容
**
**样例输入1
**
1
2
2
3
-1
**
样例输出1
**
MengMeng
SheepDaddy
**
Solution:
**
如果对五取模余2或3为必败态,否则为必胜态.
-Proof:
我们先证明 当有 起初态任意一个为 1 4 5 先手必胜
先手:x,1——取x——>胜
先手:x,4——取x——>后手:2,2(只能取2…)——>先手:1,1——>胜
先手:x,5——取x——>后手:2,3(剩下2的上面讨论了..于是取2剩下3)
——>先手:1,2——>胜
对于任意一个数 x ≡ 2 or 3 (mod 5) 我们将他拆成两个数 a b 那么我们可以断定 a 和 b其中一定有一个 mod 5 ≠ 2 or 3
然而对于任意一个 x ≡ 0 or 1 or 4 我们都可以拆成两个数 且都满足 mod 5余 2 or 3 然后这样就必胜态一直可以是自己保持着必胜态 然后数会一直减小 所以最后回到了我们最早的证明
end-
**
Code
**
#include <cstdio>#include <cstring>#include <algorithm>using namespace std; char s1[10003],s2[10003]; int main(){ while(1) { scanf("%s",s1); if(s1[0]=='-')return 0; scanf("%s",s2); int a=s1[strlen(s1)-1]-'0',b=s2[strlen(s2)-1]-'0'; a%=5;b%=5; if((a==2||a==3)&&(b==2||b==3)) printf("SheepDaddy\n"); else printf("MengMeng\n"); }}
——既然选择了远方,便只顾风雨兼程
- Vijos 1655萌萌的糖果||博弈
- Vijos P1325桐桐的糖果计划
- Vijos P1325 桐桐的糖果计划
- 博弈启蒙---分糖果
- vijos P1196 吃糖果游戏
- Vijos 桐桐的糖果计划 (tarjan求桥+双连通分量)
- 小糖的糖果
- 彩色的糖果雨
- 买不到的糖果
- sdut_java_飞花的糖果
- 飞花的糖果
- 飞花的糖果
- 带走更多的糖果
- WOJ1152-Feli的糖果
- 康娜的糖果
- vijos 口袋的天空
- vijos 宿命的PSS
- vijos 紫色的手链
- 类中或结构体中含队列,的拷贝构造函数的书写
- 图片验证码
- Android消息队列模型介绍
- MYSQL快速导入本地数据
- iOS开发中@property的属性weak nonatomic strong readonly等介绍
- Vijos 1655萌萌的糖果||博弈
- C 语言素数判断方式
- 设计模式 职责链模式(Chain of Responsibility Pattern)
- hdu 1788 Chinese remainder theorem again
- 微信第三方登录
- 把MAP集合转换成List集合
- mysql 导入大文件错误总结
- 使用NSURLCache让本地数据来代替远程UIWebView请求
- crontab运行java程序的问题