题目链接:HDU 2177 取(2堆)石子游戏
巴什博奕。
暴力搜索输出方案。
#include <iostream>
#include <cmath>
using namespace std;
int a,b;
bool solve(int a,int b)
{
int k = b - a;
double d = k * (1 + sqrt(5)) / 2;
if(a == (int)d)
return true;
return false;
}
int main()
{
while(cin >> a >> b, a + b)
{
if(solve(a,b))
cout << 0 << endl;
else
{
cout << 1 << endl;
int i;
for(i = 1;i <= a;i++)
{
if(solve(a - i,b - i))
{
cout << a - i << " " << b - i << endl;
break;
}
}
for(i = 1;i <= a;i++)
{
if(solve(a - i,b))
{
cout << a - i << " " << b << endl;
break;
}
}
if(a == b)
continue;
for(i = 1;i <= b;i++)
{
if(a <= b - i)
{
if(solve(a,b - i))
{
cout << a - i << " " << b << endl;
break;
}
}
else
{
if(solve(b - i,a))
{
cout << b - i << " " << a << endl;
break;
}
}
}
}
}
return 0;
}