1047 小石的签到题 博弈论 - 预判题

链接:https://ac.nowcoder.com/acm/problem/26212
来源:牛客网

题目描述

小石和小阳玩游戏,一共有 nnn 个数,分别为 1∼n1 \sim n1n 。两人轮流取数,小石先手。对于每轮取数,都必须选择剩下数中的任意一个数 xxx,同时还要取走 x,⌊x2⌋,⌊⌊x2⌋2⌋…x,\left \lfloor \frac{x}{2} \right \rfloor,\left \lfloor \frac{\left \lfloor \frac{x}{2} \right \rfloor}{2}\right \rfloor \ldotsx,2x,22x… 如果某个数不存在,就停止取数(不能一个数都不取)。谁取走最后一个数,谁就输了。小石想知道自己能否获胜。 如果小石能赢,输出 “Shi”,否则输出 "Yang”(均不输出引号)。

输入描述:

共一行,输入一个数 nnn 。

输出描述:

共一行,输出 "Shi""Yang"(不输出引号)。
示例1

输入

复制
1

输出

复制
Yang

说明

小石只能取走 111,小阳赢。
示例2

输入

复制
2

输出

复制
Shi

说明

若小石取走 111,则小阳只能取走 222,小石赢。

备注:

1≤n≤1091 \leq n \leq 10^91n109

 分析

假如只有一个,那先拿的人肯定输

否则,先拿的人可以拿最小的,减少一个数,或者拿其它的,减少若干个数。

也就是说,先拿的人可以通过预判,控制总共消失掉多少数,所以先拿的必胜。

 

#include<bits/stdc++.h>
using namespace std;

int main() {
    int n;cin>>n;
    if(n == 1) {
        cout<<"Yang"<<endl;
    } else {
        cout<<"Shi"<<endl;
    }
}

 

posted @ 2022-07-30 01:29  er007  阅读(28)  评论(0编辑  收藏  举报