题目思路:威佐夫博奕的裸题。必败态为奇异局势。
并且
1、非奇异局势可以转化成奇异局势这是必胜的前提。
#define _CRT_SECURE_NO_WARNINGS
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
//威佐夫博奕
//ak=k*(1+sqrt(5))/2
//bk=ak+k;
//假如局势不是奇异局势的话
//那么可以转化成奇异局势,依据是一个自然数必然位于一个奇异局势当中
int main()
{
double k = (1 + sqrt(5)) / 2.0;
int n, m;
while (~scanf("%d%d", &n, &m), n + m)
{
if (n > m)
swap(n, m);
int dis = m - n;
if ((int)(dis*k) == n)
puts("0");
else
{
puts("1");
for (int i = 1; i <=n; i++)
{
int x = n - i;
int y = m - i;
if ((int)(k*dis) == x)
printf("%d %d\n", x, y);
}
for (int i = m - 1; i >= 1; i--)
{
int x = n;
int y = i;
if (x>y)
swap(x, y);
dis = y - x;
if ((int)(dis*k) == x)
printf("%d %d\n", x, y);
}
}
}
}