列表

详情


NC26151. B. 狂赌之渊

描述

有 n 堆石头,第 i 堆石头有 a_i 个石子,两人轮流操作,每次操作先选择一堆石头,再从这堆石头中取走一个石子,如果此次操作取完了被选择的这堆石头的最后一个石子,操作者得一分。当所有石子被取走时,游戏结束。输出先手最大得分。

输入描述

第一行一个整数,第二行 n 个整数,第 i 个数字表示 

输出描述

输出一个整数表示先手最大得分。

示例1

输入:

1
3

输出:

1

示例2

输入:

2
2 2

输出:

0

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Kotlin 解法, 执行用时: 541ms, 内存消耗: 35252K, 提交时间: 2021-06-26 20:39:41

import java.util.*

fun main() {
    val cin = Scanner(System.`in`)
    val n = cin.nextInt()
    val ans = (1..n).count { cin.nextLong() % 2L == 1L }
    print(if (ans % 2 == 0) 0 else n)
}

C(clang 3.9) 解法, 执行用时: 19ms, 内存消耗: 792K, 提交时间: 2019-06-03 17:21:58

#include<stdio.h>
int main()
{
    int a,n,t;
    scanf("%d",&n);
    for(int i=0;i<n;i++) {scanf("%d",&a);t+=a%2;}
    printf("%d\n",t%2==0?0:n);
    return 0;
}

C++11(clang++ 3.9) 解法, 执行用时: 18ms, 内存消耗: 504K, 提交时间: 2020-02-26 11:11:00

#include<stdio.h>
int main()
{
	int a,n,t;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%d",&a);
		t+=a%2;
	}
	printf("%d\n",t%2==0?0:n);
	return 0;
}

Python3(3.9) 解法, 执行用时: 46ms, 内存消耗: 13500K, 提交时间: 2020-10-23 19:03:45

n = int(input())
ans = 0
sum = 0
a = list(map(int, input().split()))
for i in range(0, len(a)):
    sum+=a[i]
print(len(a) if sum&1 else 0)

上一题