CodeForces 630 R. Game(博弈论)

Description
一学生因挂科被迫和老师玩游戏,游戏规则如下:在一个n*n的棋盘上轮流下棋,初始时棋盘全空,每次只能在空格上下棋,而且此空格上下左右不能有棋子,但是对角可以有棋子,最后谁无棋可下谁输。假设学生和老师都足够机智,现给出棋盘大小,如果先手赢则输出1,否则输出2
Input
一个整数n(1<=n<=10^18)
Output
先手赢输出1,后手赢输出2
Sample Input
1
Sample Output
1
Solution
博弈论,如果n为奇数,那么先手第一步将棋子下在正中,那么之后无论后手下哪儿,先手都可以将棋下在与后手上一步棋关于棋盘中心对称对称的位置,最后一定是后手无棋可下,此时输出1;如果n为偶数,那么无论先手下哪儿,后手都可以将棋下在与先手上一步棋关于棋盘中心对称的位置,最后一定是先手无棋可下,此时输出2
Code

#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll;
ll n;
int main()
{
    while(~scanf("%I64d",&n))
        printf("%d\n",n%2?1:2);
    return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值