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;
}