欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

The Stones Game【取石子博弈 & 思维】

程序员文章站 2022-03-15 23:46:18
...

The Stones Game【取石子博弈 & 思维】

2020.7.22补题

Problem G. The Stones Game

The Stones Game【取石子博弈 & 思维】

题意

有n个石头,m个选手

每个选手要做2步操作:

(1)拿一块石头或者不拿

(2)如果上一个选手的操作(1)是拿了石头 或者当前选手是1号选手,那么这一步不可以拿石头,反之,必须拿石头。

" if this is not the first turn and in the previous turn the player decided not to remove a stonein his/her first step, then the current player must remove a stone in this step" 这句话很难理解~,把它变成否定句,and变成or,就可以得到上面的那句话。

谁最后取完石头睡赢,问n个石头,m个选手下,y是否处于必赢态。

分析

1号选手第(1)步拿了石头,(2)步不能拿石头,那么2号选手第(1)步可以选择拿和不拿,第(2)步不能拿。

因此2个选手最少要拿1个石头,最多拿2个石头、

如果是有3个选手,也可以推得最多拿3个,最少拿2个。

因此如果有3个选手,要拿3个石头,那么3号选手是必赢态。

有n个石头,m个选手时,n%m号选手是必赢态。

#include "bits/stdc++.h"
using namespace  std;
int main()
{
    int cas;
    scanf("%d",&cas);
    while (cas--)
    {
        int n,m,y;
        scanf("%d %d %d",&n,&m,&y);
        int k=n%m;
        if(k==0)k=m;
        if(y==k)cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
    return 0;
}