HDU 1851 (N个BASH博弈子游戏)

题意:n堆石子,分别有M1,M2,·······,Mn个石子,各堆分别最多取L1,L2,·····Ln个石头,两个人分别取,一次只能从一堆中取,取走最后一个石子的人获胜。后选的人获胜输出Yes,否则输出No,

第一行一个数字表示数据有多少组,每组测试数据第一行是一个整数n,表示有n行,然后n行分别是两个整数Mi,Li. 表示第i堆有Mi个石子,一次最多取Li个石子。


Sample Input
2 // T
1 // n
5 4 // m l
2
1 1
2 2

Sample Output
Yes
No

 1 # include <iostream>
 2 # include <cstdio>
 3 # include <cmath>
 4 # include <algorithm>
 5 using namespace std ;
 6 
 7 int main ()
 8 {
 9     int T ;
10     scanf("%d" , &T) ;
11     while (T--)
12     {
13         int n ,i , m , l ;
14         int ans = 0 ;
15         scanf("%d" , &n) ;
16         for (i = 1 ; i <= n ; i++)
17         {
18             scanf("%d %d" , &m , &l) ;
19             ans ^= (m % (l + 1)) ;
20         }
21         if (ans == 0)  //后者胜
22           printf("Yes\n") ;
23         else
24           printf("No\n") ;
25     }
26     
27     return 0 ;
28 }
View Code

 

posted @ 2015-05-09 17:26  __Meng  阅读(246)  评论(0编辑  收藏  举报