UVA 1482 Playing With Stones

 

(蓝书里有这个题貌似)

一言不合就打表,可以发现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;
}
复制代码

 

posted @   蒟蒻JHY  阅读(211)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 依赖注入中的 Captive Dependency
· .NET Core 对象分配(Alloc)底层原理浅谈
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
阅读排行:
· 终于决定:把自己家的能源管理系统开源了!
· 外部H5唤起常用小程序链接规则整理
· C#实现 Winform 程序在系统托盘显示图标 & 开机自启动
· WPF 怎么利用behavior优雅的给一个Datagrid添加一个全选的功能
· 了解 ASP.NET Core 中的中间件
点击右上角即可分享
微信分享提示