hdu1850博弈论取分堆的石子

方法就是将该组测试数据中所有的数据进行异或计算。得出结果为0则为必输,不为零必胜。

#include<iostream>

using namespace std;



const int MAXM=102;

int main()

{

    int M;

    while(cin>>M)

    {

        int num[MAXM];

        if(M==0)

        {

            break;

        }

        int i=0;

        for(i=0;i<=M-1;i++)

        {

            cin>>num[i];

        }

        int result=0;

        for(i=0;i<=M-1;i++)

        {

            int j=0;

            int sum=0;

            for(j=0;j<=M-1;j++)

            {

                if(i!=j)

                {

                    sum=sum^num[j];

                }

            }

            if(sum<num[i])

            {

                result++;

            }

        }

        cout<<result<<endl;

    }

    return 0;

}

  

你可能感兴趣的:(HDU)