竞赛讨论区 > Wannafly挑战赛24 第一题
头像
sorrow8
发布于 2018-09-14 22:08
+ 关注

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

全部评论

(0) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐