(蓝书里有这个题貌似)
一言不合就打表,可以发现sg数组是个分形的,所以可以推出递推式:
1.x是偶数时,sg(x)=x/2
2.否则,sg(x)=sg(x/2)
#include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<cmath> #include<cstring> #define ll long long using namespace std; ll sg(ll x){ return (x&1)?sg(x>>1):x>>1; } int T,n; ll tot,a; int main(){ scanf("%d",&T); while(T--){ tot=0; scanf("%d",&n); while(n--){ scanf("%lld",&a); tot^=sg(a); } if(tot) puts("YES"); else puts("NO"); } return 0; }