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");
    }
}

全部评论

相关推荐

爱吃肉的伊登在写日记:好棒,27届简历能做成这个样子,但是第一个项目感觉cover住难度还是不小的,特别是二面的时候肯定要对分布式系统设计这一块儿有高出正常面试者的水平才行
点赞 评论 收藏
分享
强大的马里奥:不太可能,我校计算机硕士就业率99%
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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