C语言编程100题-6.7

6.7
有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。 数据输入: 输入表示若干种石子的初始情况,包含两个非负整数 a 和 b ,表示两堆石子的数目, a 和 b 都不大于 1,000,000,000 。 数据输出: 包含一个数字 1 或 0 ,如果最后你是胜者,则为 1 ,反之,则为 0 。
样例:
2 1
0
样例输入:
2 1
样例输出:
0

#include
#include
int main()
{
	int a, b, pan, n, h, k, c;
	scanf("%d %d", &a, &b);
	if (a > b)
	{
		c = a; a = b; b = c;
	}
	pan = 1;
	for (k = 1; k < 1000; k++)
	{
		n = k*(1 + sqrt(5.0)) / 2.0;
		h = n + k;
		if (a == n && b == h)
		{
			pan = 0;
		}
	}
	printf("%d", pan);
}

你可能感兴趣的:(编程例题)