Wannafly挑战赛24 第一题

思路:首先将数组中偶数个数和奇数个数求出,然后每个奇数都可以分割1和一个偶数为一次操作,每个偶数两两合并为一个新偶数,求出当操作多少次后偶数只剩一个。将操作总和求出,然后进行取余操作,若为1则Alice胜,若为0则Bob胜
时间复杂度:O(log2n)
#include<stdio.h>
intmain(){
    longlongi,n,j,ou = 0,ji = 0,num = 0;
    scanf("%lld",&n);
    inta[n];
    for(i = 0;i < n ;i++){
        scanf("%d",&j);
        if(j>1){
            if(j%2){
                ji++;
            }else{
                ou++;
            }
        }
    }
    ou = ji+ou;
    num = ji;
    while(ou>1){
        num+=(ou/2);
        ou = ou/2+ou%2;
        num%=2;
    }
    if(num){
        printf("Alice");
    }else{
        printf("Bob");
    }
}

全部评论

相关推荐

缒梦&独舞:这家公司是这样的,去年给我实习offer了,不过也是面着玩儿的,他周六还要去做公益志愿活动
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务