游戏
题目大意
- 就是有N块黄金,每次拿走2的次方(1,2,4,8…)
问让猫老大先拿看谁能最后拿完,如果 King 必胜则输出一行“ King will win.”; 否则第一行输出“ MaoLaoDa willwin.”, 第二行输出他第一次拿的最小数量
输入样例
8
4
2
输出样例
MaoLaoDa will win.
2
MaoLaoDa will win.
1
MaoLaoDa will win.
2
数据范围
解题思路
- 其实这道题就是要推结论,我们可以发现只要是3的倍数就是 King赢,那么只要跟着规律打即可.
程序如下
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
int n,t;
char x;
int read()
{
x=getchar();
t=0;
while (x<'0'||x>'9') x=getchar();
while (x>='0'&&x<='9')
{
t+=x-48;
x=getchar();
}
return t;
}
int main()
{
freopen("atlantis.in","r",stdin);
freopen("atlantis.out","w",stdout);
for(int i=1;i<=3;++i)
{
n=read();
if(n%3==0) printf("King will win.\n");
else printf("MaoLaoDa will win.\n%d\n",n%3);
}
return 0;
}