目录
题目
幼儿园组织活动,老师布置了一个任务:每个小朋友去了解与自己同一个小区的小朋友还有几个.我们将这些数量汇总到数组 garden 中。
请根据这些小朋友给出的信息,计算班级小朋友至少有多少个?(至少来自几个小区)
输入描述
输入: garden = [2,2,3]
garden 数组长度最大为 999
每个小区的小朋友数量最多 1000 人,也就是 garden的范围为 [0,999]
输出描述
一个整数代表班级小朋友至少来自几个小区
示例1:
输入:
2 2 3
输出:
7
说明:
第一个小朋友反馈有两个小朋友和自己同一小区,即此小区有3个小朋友。第二个小朋友反馈有两个小朋友和自己同一小区,即此小区有3个小朋友。这两个小朋友,可能是同一小区的,且此小区的小朋友只有3个人。第三个小区反馈还有3个小朋友与自己同一小区,则这些小朋友只能是另外一个小区的。这个小区有4个小朋友。
代码
import math
from collections import Counter
lst = list(map(int, input().split(' ')))
counter = Counter(lst)
res = 0
for key, count in counter.items():
if count <= key:
res += key + 1
else:
res += (key + 1) * (math.ceil(count / (key + 1)) + count % (key + 1))
print(res)
# import math
#
# nums = [int(x) for x in input().split(" ")]
# zones = [0 for x in range(1000)]
# count = 0
#
# i = 0
# while (True):
# if (i >= len(nums)):
# break
# else:
# zones[nums[i]] += 1
#
# i += 1
#
# for j in range(1000):
# if (zones[i] <= 0):
# continue
# else:
# total = math.ceil(zones[j] / (j + 1))
# count += total * (j + 1)
# print(count)