巴什博弈 HDU-1846

描述:一堆石子有 n 個 ,兩個人開始輪流取,每人最多取m個,最少取1個,最後一個將石子取完的是贏家。

思路:對於先手來說,如果有(m+1)個石子,先手取 k 個,後手就可以取 m+1-k 個,所以有式子 n=(m+1)*r+s ,s<=m 時,先手可以將s先拿走,然後先手變成了後手 ,保持取r個回合,就一定能贏

擼代碼:

#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
    int test,num,m;
    scanf("%d",&test);
    while(test--){
        scanf("%d%d",&num,&m);
        if(num%(m+1)<=m&&num%(m+1)){
            printf("first\n");
        }else {
            printf("second\n");
        }
    }
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章