列表

详情


NC54754. WNM与ZN

描述

WNM和ZN最近迷上了按位与运算符。 按位与运算符是双目运算符,其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位都为1时,结果位才为1。 下面以为例:

1.将5和3分别化为二进制,即(101)_2(011)_2

2.将5和3的二进制每位一一对应,即1对0、0对1、1对1。

3.因为只有对应的两个二进位都为1时,结果位才为1,所以的结果的二进制应为(001)_2,即十进制的1。

WNM喜欢与1按位与运算后为0的数,ZN喜欢与1按位与运算后为1的数。有一天WNM和ZN一起在工作室疯狂刷题,为了缓解学习的疲劳,WNM准备了n颗糖,他们两个人轮流取糖吃,由WNM先取。WNM和ZN每轮拿取的个数一定是一个他们各自喜欢的数字(当然这个数字不能超过当前剩余糖果的数量),谁先没有糖吃谁就输了。WNM和ZN都很nb,所以他们都会采取最优策略,请问最后谁能获胜?

输入描述

第一行输入一个整数 ,表示有 t 组数据。

接下来 t 行,每行输入一个整数 ,代表糖果的个数。

输出描述

输出包含 t 行,每行输出一个字符串(“WNMnb” 或 “ZNnb”),表示WNM或者ZN获胜。

示例1

输入:

2
4
3

输出:

WNMnb
ZNnb

说明:

对于第一个样例n=4,因为4\&1=0,WNM可以直接取走所有的糖果获得胜利。所以最终WNM获胜。

对于第二个样例n=3,因为不取糖果就算输,所以WNM第一步只能取两颗糖果。还剩一颗糖果,因为1\&1=1,ZN可以取走最后一颗糖果,之后WNM没有糖果可取。所以最终ZN获胜。

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang 3.9) 解法, 执行用时: 238ms, 内存消耗: 5600K, 提交时间: 2019-12-07 14:28:26

#include <stdio.h>
int main() {
	int t;
	long long int n;
	scanf("%d",&t);
	while(t--) {
		scanf("%lld",&n);
		if(n%2!=0||n==0)printf("ZNnb\n");
		else printf("WNMnb\n");
	}
	return 0;
}

C++(clang++11) 解法, 执行用时: 199ms, 内存消耗: 9364K, 提交时间: 2020-12-19 11:01:42

#include <stdio.h>
int main()
{
	int t,n,i;
	scanf("%d",&t);
	for (i=0;i<t;i++){
		scanf("%d",&n);
		if(n%2==0&&n!=0)
		printf("WNMnb\n");
		else 
		printf("ZNnb\n");
	}
	return 0;
}

上一题