码迷,mamicode.com
首页 > 其他好文 > 详细

巴什博弈

时间:2017-05-01 14:16:24      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:参与   博弈   int   自然数   color   style   判断   经典的   div   

对于这个博弈,有一种经典的例题:

1.只有一堆数量为n的石子;

2.只有两个人参与这个游戏;

3.两个人轮流取1--m个石子;

4.最先取完石子的人赢;

 

输出:

如果先手赢,输出1,否则输出0;

 

题解:

如果n=m+1,因为最多取m个。所以先手不论取多少个,后手都能一次拿完。

  所以,要想先手赢 n=(m+1)*r+s,(r为自然数,s为1--m).

那么先手拿走s个,后手拿走1--m个,,,那么先手肯定获胜。总之要给对手留下 m+1个的倍数,,先手就能获胜。

于是只要判断 n%(m+1)是否等于0。

如果等于0,那么无论先手怎么取,都会输。

 

1 int n,m;
2 if(n%(m+1))
3     printf("0\n");
4 else
5     printf("1\n"); 

 

巴什博弈

标签:参与   博弈   int   自然数   color   style   判断   经典的   div   

原文地址:http://www.cnblogs.com/jaydenouyang/p/6791792.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!