巴什博弈

  我们接触到了第二个博弈,巴什博弈。

 只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m.最后取光者得胜.

 n = (m+1)r+s , (r为任意自然数,sm), n%(m+1) != 0, 则先取者肯定获胜。

 所以你在每次留给对手m+1的倍数就可以了。

 HDU1847 巴什博弈的简单应用。

#include<iostream>
#include<cstdio>
#include<string.h>
#include<cstring>
#include<string>
#include<stack>
#include<set>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>

#define LOCAL
#define ll long long
#define lll unsigned long long
#define MAX 1000009
#define eps 1e-8
#define INF 0xfffffff
#define mod 1000000007

using namespace std;
/*

题意:巴什博弈

想法:   n = (m+1)r+s , (r为任意自然数,s≤m), 即n%(m+1) != 0, 则先取者肯定获胜。

ps:http://www.cnblogs.com/cchun/archive/2011/08/10/2520096.html


*/

int main()
{
    //#ifdef LOCAL
      // freopen("date.in","r",stdin);
       //freopen("date.out","w",stdout);
   // #endif // LOCAL
    int n;
    while(~scanf("%d",&n))
    {
        if(n%3!=0)
            puts("Kiki");
        else
            puts("Cici");
    }
    return 0;
}


你可能感兴趣的:(巴什博弈)