码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 5795

时间:2016-08-05 15:50:44      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5795

题意:一个n堆的取石子游戏,每次可以取一堆中的任意个,或者将当前堆分为三个非空堆。求先手/后手必胜。

 思路:打表sg函数找规律。

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string.h>
using namespace std;
#define N 1000100;
#define LL long long
int sg[200],vis[200];
/*void st()
{
     int i,j,k;
     sg[0]=0;
     for(i=1;i<100;i++)
     {
         memset(vis,0,sizeof(vis));
         for(j=0;j<i;j++)
             vis[sg[i-j]]=1;
         if(i>=3)
         {
             for(j=1;j<i-2;j++)
               for(k=1;k<i-2;k++)
                     if(j+k<i)
                        vis[sg[j]^sg[k]^sg[i-k-j]]=1;
         }
         j=0;
         while(vis[j]) j++;
         sg[i]=j;
         printf("%d\n",sg[i]);
     }
}*/
int main()
{
     int t,n,a;
     //st();
     cin>>t;
     while(t--)
     {
         int  ans=0;
         scanf("%d",&n);
         for(int i=0;i<n;i++)
         {
             scanf("%d",&a);
             if(a%8==0) a-=1;
             else if (a%8==7) a+=1;
             ans^=a;
         }
         printf("%s\n",( ans ? "First player wins." : "Second player wins."));
     }
    return 0;
}

 

hdu 5795

标签:

原文地址:http://www.cnblogs.com/yuanbo123/p/5741125.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!