最新消息:点击查看大S的省钱秘笈

Vijos P1196 吃糖果游戏 C语言版

Vijos题解 Slyar 74浏览 0评论

文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

描述 Description

Matrix67和Shadow正在做一个小游戏。
桌子上放着两堆糖果,Matrix67和Shadow轮流对这些糖果进行操作。在每一次操作中,操作者需要吃掉其中一堆糖果,并且把另一堆糖果分成两 堆(可以不相等)留给对方操作。游戏如此进行下去,糖果数会越来越少,最后必将出现这样一种情况:某人吃掉一堆糖果后发现另一堆里只剩一块糖果不能再分 了。游戏规定此时该操作者吃掉最后这一块糖果从而取胜。
这个游戏是不公平的。对于任意一种初始状态,总有一方有必胜策略。所谓有必胜策略是指,无论对方如何操作,自己总有办法取胜。
Matrix67和Shadow将进行10次游戏,每一次游戏中总是Matrix67先进行操作。Matrix67想知道每一次游戏中谁有必胜策略。

输入格式 Input Format

输入数据一共10行,每行有两个用空格隔开的正整数,表示一次游戏开始时桌子上两堆糖果分别有多少个。
对于50%的数据,这些正整数均不超过100;
对于70%的数据,这些正整数均不超过10 000;
对于100%的数据,这些正整数均不超过10 000位。

输出格式 Output Format

输出十行字符串。这些字符串只能是“Matrix67”或“Shadow”,它们表示对应的十行输入数据中有必胜策略的一方。
请注意大小写。

Tip:当面临着糖果数为2或3的一堆时,你就输定了;枚举后发现发现,当面临糖果数为7或8的一堆时,你也输定了。另外像这种数位上万的,一般只要考虑尾数就好了。。。

#include <stdio.h>
#include <string.h>

int main(){
int i;
char x[10001],y[10001],a,b;
for (i=0;i<10;i++){
scanf("%s%s",x,y);
a=x[strlen(x)-1];
b=y[strlen(y)-1];
if (((a=='2')||(a=='3')||(a=='7')||(a=='8'))&&((b=='2')||(b=='3')||(b=='7')||(b=='8')))
printf("Shadow");
else
printf("Matrix67");
}
system("pause");
return 0;
}

转载请注明:Slyar Home » Vijos P1196 吃糖果游戏 C语言版

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址