Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 211 Solved: 108
[Submit][Status][Web Board]
Description
一堆石子有n個,兩人輪流取.每次取最少取1個,最多取m個。取完者勝.先取者負輸出"Second win".先取者勝輸出"First win"
Input
多組測試數據。
每組測試數據包含2個正整數n,m。(n,m<=10000000)
Output
對於每組測試數據,輸出誰獲勝.
Sample Input
2 1
3 2
3 1
Sample Output
Second win
Second win
First win
HINT
Source
經典的巴什博奕題目
巴什博弈:只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取一個,最多取m個。最後取光者得勝。
小學的時候就應該遇到過了。。。
一次只能拿1---m個我們發現只要n爲m+1的 時候一定後取的贏,如果n=(m+1)r+s,(r爲任意自然數,s≤m),那麼先取者要拿走s個物品,如果後取者拿走k(≤m)個,那麼先取者再拿走m+1-k個,結果剩下(m+1)(r-1)個,以後保持這樣的取法,那麼先取者肯定獲勝。總之,要保持給對手留下(m+1)的倍數,就能最後獲勝。
#include<stdio.h>
int main()
{
int n,m;
while(~scanf("%d %d",&n,&m))
{
if(n%(1+m)==0)
{
printf("Second win\n");
}
else{printf("First win\n");}
}
return 0;
}