题目描述
期末考试就要来临了,大家都在紧张的复习。作为在考场拼搏了十几载的当代大学生,小明和小华更懂得考前的放松。他们在每天晚上休息之前都要玩一会儿扑克牌以放松神经。
他们打牌的规则是这样的:
总共 n 张牌;
双方轮流抓牌;
每人每次抓牌的个数只能是 2 的幂次,即 1,2,4,8,16 等。
抓完牌,胜负结果也出来了,最后抓完牌的人为胜者;
假设小明和小华都足够聪明,并且每次都是小明先抓牌,请问谁能赢呢?
题目描述
期末考试就要来临了,大家都在紧张的复习。作为在考场拼搏了十几载的当代大学生,小明和小华更懂得考前的放松。他们在每天晚上休息之前都要玩一会儿扑克牌以放松神经。
他们打牌的规则是这样的:
总共 n 张牌;
双方轮流抓牌;
每人每次抓牌的个数只能是 2 的幂次,即 1,2,4,8,16 等。
抓完牌,胜负结果也出来了,最后抓完牌的人为胜者;
假设小明和小华都足够聪明,并且每次都是小明先抓牌,请问谁能赢呢?
将n转换成二进制后如果比特为1的位数是奇数小明赢否则小华赢:
#include <stdio.h>
int main()
{
int n,c=0;
scanf("%d",&n);
for(;n;c+=n%2,n/=2);
printf("%s\n",c%2 ? "ming" : "hua");
return 0;
}