hdu 2897 巴什博弈变形 ***

大意:一堆石子共有n个,A,B两人轮流从中取,每次取的石子数必须
在[p,q]区间内,若剩下的石子数少于p个,当前取者必须全部取完。
最后取石子的人输。给出n,p,q,问先取者是否有必胜策略?

Bash博弈的变形
假设先取者为A,后取者为B,初始状态下有石子n个,除最后一次每次取的石子个数必须在[p,q]区间内,则:
1.若当前石子共有n = (p+q)*r个,则A必胜,必胜策略为:
    A第一次取q个,以后每次若B取k个,A取(p+q-k)个,如此最后必剩下p个给B,A胜
2.若n = (p+q)*r+left,(1<left<=p),则B必胜,必胜策略为:
   每次取石子活动中,若A取k个,则B取(p+q-k)个,那么最后必剩下left个给A,
   此时left<=p,A只能一次取完,B胜
3.若n = (p+q)*r+left,(p<left<p+q),则A必胜,必胜策略为:
   A第一次取t(1<left-t<=p)个,以后每次若B取k个,A取(p+q-k)个,
   那么最后必剩下1<left-t<=p个给B,A胜

复制代码
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int n,p,q;
 5     while(scanf("%d%d%d",&n,&p,&q)!=EOF)
 6     {
 7         int left=n%(p+q);
 8         if(left<=p&&left>0)
 9              printf("LOST\n");
10         else  printf("WIN\n");
11     }    
12     return 0;
13 }
复制代码

 

posted @   miao_a_miao  阅读(222)  评论(0编辑  收藏  举报
编辑推荐:
· 继承的思维:从思维模式到架构设计的深度解析
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
阅读排行:
· Cursor预测程序员行业倒计时:CTO应做好50%裁员计划
· 用99元买的服务器搭一套CI/CD系统
· 当职场成战场:降职、阴谋与一场硬碰硬的抗争
· Excel百万数据如何快速导入?
· 35岁程序员的中年求职记:四次碰壁后的深度反思
点击右上角即可分享
微信分享提示