只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。
int main()
{
int a,n,m,i;
scanf("%d",&a);
for(i=1;i<=a;i++)
{
scanf("%d%d",&n,&m);
if(n%(m+1)==0)
printf("Lose\n");
else
printf("Win\n");
}
return 0;
}
如果n=m+1,那么无论先手拿走多少个,后手都可以把石子全部拿完,n又可以用一个公式表示:n=(m+1)*k+T,T<=m
若 T=0,则 n 刚好是 m+1 的整数倍,则无论先手每次拿多少个都会剩余a*(m+1)+(m+1-X) 【X为拿走的个数,a为正整数】,因为m+1-X 必大于0小于m,则先手必输。
若 T≠0,则先手先拿走 T 个,后手拿走 X (X<=m)个,先手再拿走m+1-X个 ,按这种方式依次去拿,最后后手拿完后刚好剩余m+1-X,即后手必输
int main()
{
int a,n,m,i;
scanf("%d",&a);
for(i=1;i<=a;i++)
{
scanf("%d%d",&n,&m);
if(n%(m+1)==0)
printf("Lose\n");
else
printf("Win\n");
}
return 0;
}