题解 P4136 【谁能赢呢?】
a2920353120 · · 题解
一道数论的好题
n * n 的棋盘
如果n 为偶数 那么
{n^2} 也为偶数 此时除去开始的一个点 剩余{n^2} - 1个点
如果
{n^2} - 1 为奇数 推出 小明同学能赢因为
{n^2} - 1 & 1 != 0设
{n^2} - 1 = 2 * k + 1
则前2k步一定以小红同学结束
第2k + 1步由小明同学走
小红同学就会开心惊奇的发现,他输了
反之 n为奇数
前 2 *
第 2 *
这时,小明同学发现,他输了
由于 n 与
所以只考虑 n的奇偶情况
展示一段 神秘的代码
#include<cstdio>
main(int n) {while(scanf("%d", &n) && n) (n & 1) ? printf("Bob\n") : printf("Alice\n");}
只有两行? 是的两行就够了
介绍一下 ? : 的使用 ?前一个判断式
值为真 执行?后语句
值为假 执行:后语句
n & 1 判断n的奇偶 把n 、1做与运算
即n的2进制形式 与1的2进制形式
若他们的同一位都为1 答案为1 否则为0
最短AC代码