1. 程式人生 > >小樂樂學博弈

小樂樂學博弈

連結:https://ac.nowcoder.com/acm/contest/301/I
來源:牛客網
 

題目描述

小樂樂和小皮蛋開始學習關於博弈的知識。
給定兩堆石子,第一堆有n個石子,第二堆有m個石子。
每次操作可以從一堆石子中拿走一些石子,拿走石子的數量可以是1 - k個,小樂樂先手拿石子,然後依次輪流。
假如到小樂樂的輪次,小樂樂拿不了了(也就是所有的石子都被拿光了),那麼小皮蛋就獲勝,反之亦然。
假設小樂樂和小皮蛋都絕頂聰明,都會採用最佳的策略,請問最後誰會贏。

輸入描述:

多組資料輸入,對於每一組資料,只有一行由空格分開的三個整數n, m, k(0 <= n, m <= 1000000000, k >= |n - m|).

輸出描述:

如果小樂樂會贏,輸出"HAI YOU SEI!",否則輸出"LAOZI CHUI SI NI!"。

 

示例1

輸入

130 135 5

輸出

HAI YOU SEI!

說明

小樂樂會贏

分析:巴什博奕與尼姆博奕的結合。

程式碼如下:

#include<stdio.h>
#include<math.h>
int main()
{
    int n,m,k,w,t,flag=0,z,t2,t1,a[3],i;
    while(scanf("%d%d%d",&a[0],&a[1],&k) !=EOF)
    {
        t=0;
        for(i=0;i<=1;i++)
        {
            t^=a[i]%(k+1);
        }
        if(t==0)
        {
            printf("LAOZI CHUI SI NI!\n");
        }
        else
        printf("HAI YOU SEI!\n");
    }
    return 0;
}