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

【LA5059】Playing With Stones (SG函数)

时间:2018-11-13 16:13:28      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:amp   namespace   space   name   iostream   ios   函数   std   游戏   

题意:有n堆石子,分别有a[i]个。两个游戏者轮流操作,每次可以选一堆,拿走至少一个石子,但不能拿走超过一半的石子。

谁不能拿石子就算输,问先手胜负情况

n<=100,1<=a[i]<=2e18

思路:打表找SG函数的规律

当n为偶数时,SG(n)=n/2

当n为奇数时,SG(n)=SG(n/2)

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<cmath>
 6 typedef long long ll;
 7 using namespace std;
 8 #define N   110
 9 #define oo  10000000
10 #define MOD 1000000007
11 
12 ll sg(ll x)
13 {
14     if(x&1) return sg(x/2);
15     return x/2;
16 }
17 
18 int main()
19 {
20     int cas;
21     scanf("%d",&cas);
22     while(cas--)
23     {
24         int n;
25         scanf("%d",&n);
26         ll ans=0;
27         for(int i=1;i<=n;i++)
28         {
29             ll x;
30             scanf("%lld",&x);
31             ans^=sg(x);
32         }
33         if(ans) printf("YES\n");
34          else printf("NO\n");
35     }
36     return 0;
37 }
38     

 

【LA5059】Playing With Stones (SG函数)

标签:amp   namespace   space   name   iostream   ios   函数   std   游戏   

原文地址:https://www.cnblogs.com/myx12345/p/9952452.html

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