小樂樂學博弈
阿新 • • 發佈:2018-12-03
連結: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; }