UVALive - 5059

一眼看过去就是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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章