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

HDU 1847(博弈)

时间:2016-05-22 21:40:03      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

题意:不用说了吧,都是中文的。

析:虽说这是一个博弈的题,但是也很简单的,在说这个题目前我们先说一下巴什博弈定理。

巴什博弈定理:一堆物品有n个,有两个人(两个人足够聪明)轮流取,规定每次至少取一个,最多取m个,最后取完的胜利。 如果n%(m+1) != 0, 则先取者获胜,否则后取者获胜。

为什么呢?我们来分析一下,因为两个人足够聪明,如果第一个人给第二个人每次都留m+1的倍数,那么第二人要么取一个,要么大于一个小于m个,当取一个时第一个可以取m个又够成m+1的倍数,最后肯是第一个胜,

要是取大于一个小于m个,第一个人同样可以再构成m+1的倍数,最后肯定是第一个胜。

说完巴什博弈定理,我们再看这个题是不是就觉得简单了呢?第一个去构造3的倍数,因为可以取2的幂次的倍数,只要能构造出来,肯定是第一个胜。

代码如下:

#include <iostream>
#include <cstdio>

using namespace std;

int main(){
    int n;
    while(~scanf("%d", &n)){
        if(0 == n % 3)  puts("Cici");
        else  puts("Kiki");
    }
    return 0;
}

 

HDU 1847(博弈)

标签:

原文地址:http://www.cnblogs.com/dwtfukgv/p/5517818.html

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