表示 并不会打表,太久没有做博弈题了。
好像也不是很难的样子,就是加了个限制= =
那我最后最少要有n/m堆,那么前面的几堆都是满的,唯一不是满的的那一堆的数量是n%m。
然后我们模拟最后那一步是谁走的,就知道最终答案了。
具体的话直接算出来前面合并了多少步,合成i需要i-1步= =
#include<cstdio>
using namespace std;
int n,m;
int ans;
int main()
{
int cas;
scanf("%d",&cas);
while (cas--)
{
scanf("%d%d",&n,&m);
int c=n/m,d=n%m;
if (!d)d++;
ans=(m-1)*c+d-1;
if (ans%2==0)printf("1\n");
else printf("0\n");
}
}