AT3939 [ARC091D] Strange Nim

题链
打表找规律SG,然后发现可以通过整除分块加速(列方程求出y)

#include<bits/stdc++.h>
using namespace std;

int T,K;
int ask(int n) {
	if(n<K) return 0;
	if(n%K==0) return n/K;
	int x=n/K,y=(n-K*x)/(x+1);
	if(y==0) return ask(n-x-1);
	return ask(n-y*(x+1));
}
int main() {
	scanf("%d",&T);
	int ans=0;
	while(T--) {
		int x; scanf("%d%d",&x,&K);
		ans^=ask(x);
	}
	if(!ans)  puts("Aoki");
		else puts("Takahashi");
	return 0;
}

posted @ 2021-06-11 23:04  wwwsfff  阅读(29)  评论(0编辑  收藏  举报