先找必败态
如:一堆石头有8个
NO:0 1 2 3 4 5 6 7 8
S :P N N N P N N N P
即s=a%(b+1)
if s==0 就为必败态
在用nim博弈是s^(a%(b+1))即可
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<stdio.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
int i,a,b,s;
for(i=1;i<=n;i++)
{
scanf("%d%d",&a,&b);
if(i==1)
s=a%(b+1);
else
s=s^(a%(b+1));
}
if(s==0)
printf("Yes\n");
else
printf("No\n");
}
}