取多堆石头的博弈——hdu1851

先找必败态
如:一堆石头有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))即可
View Code
#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");
}
}
原文地址:https://www.cnblogs.com/huhuuu/p/2011834.html