一眼看过去就是SG
但是再看一眼数据范围,WC,打表的话数组开不到哇
想啊想,想啊想,晚上刷题好痛苦呀,想不出来呀,一看题解,打表找规律,WC,这也可以,可是我懒啊,不懒的话也可以打表找一下
打表找规律的话直接找板子稍微改一下就可以了,稍微改还不会,那就再好好看看SG吧
总之规律是
偶数 SG(n) = n >> 1
奇数 SG(n) = SG(n>>1)
然后当你知道了规律之后,你就开心的Ac了
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
#define LL long long
LL SG(LL n){
return (n&1)==0 ? (n>>1) : SG(n>>1);
}
int main(){
int T;
scanf("%d", &T);
while(T--){
int N;
scanf("%d", &N);
LL Xor = 0;
LL n;
for(int i = 0; i < N; i++){
scanf("%lld", &n);
Xor ^= SG(n);
}
if(Xor) printf("YES\n");
else printf("NO\n");
}
return 0;
}