当前位置:   article > 正文

2024. 1华为od机试C卷【小朋友来自多少小区】Python_小朋友来自多少小区 华为od

小朋友来自多少小区 华为od

目录

题目

代码


题目

幼儿园组织活动,老师布置了一个任务:每个小朋友去了解与自己同一个小区的小朋友还有几个.我们将这些数量汇总到数组 garden 中。
请根据这些小朋友给出的信息,计算班级小朋友至少有多少个?(至少来自几个小区)
输入描述
输入: garden = [2,2,3]
garden 数组长度最大为 999
每个小区的小朋友数量最多 1000 人,也就是 garden的范围为 [0,999]
输出描述
一个整数代表班级小朋友至少来自几个小区

示例1:

输入:

2 2 3

输出:

7

说明:
第一个小朋友反馈有两个小朋友和自己同一小区,即此小区有3个小朋友。第二个小朋友反馈有两个小朋友和自己同一小区,即此小区有3个小朋友。这两个小朋友,可能是同一小区的,且此小区的小朋友只有3个人。第三个小区反馈还有3个小朋友与自己同一小区,则这些小朋友只能是另外一个小区的。这个小区有4个小朋友。

代码

  1. import math
  2. from collections import Counter
  3. lst = list(map(int, input().split(' ')))
  4. counter = Counter(lst)
  5. res = 0
  6. for key, count in counter.items():
  7. if count <= key:
  8. res += key + 1
  9. else:
  10. res += (key + 1) * (math.ceil(count / (key + 1)) + count % (key + 1))
  11. print(res)
  12. # import math
  13. #
  14. # nums = [int(x) for x in input().split(" ")]
  15. # zones = [0 for x in range(1000)]
  16. # count = 0
  17. #
  18. # i = 0
  19. # while (True):
  20. # if (i >= len(nums)):
  21. # break
  22. # else:
  23. # zones[nums[i]] += 1
  24. #
  25. # i += 1
  26. #
  27. # for j in range(1000):
  28. # if (zones[i] <= 0):
  29. # continue
  30. # else:
  31. # total = math.ceil(zones[j] / (j + 1))
  32. # count += total * (j + 1)
  33. # print(count)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/440903
推荐阅读
相关标签
  

闽ICP备14008679号