HDU 2177 取(2堆)石子游戏

题目链接: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;
}



你可能感兴趣的:(HDU 2177 取(2堆)石子游戏)