最新华为OD机试真题-小区小朋友统计(100分)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员

✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解

💻 ACM金牌🏅️|多次 AK 大厂笔试 | 编程一对一辅导

👏 感谢大家的订阅➕ 和 喜欢💗

最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线评测

最新华为OD机试目录: https://www.nowcoder.com/discuss/636153620743897088?sourceSSR=users

📎 在线评测链接

小区小朋友统计(100分)

alt

🌍 评测功能需要 =>订阅专栏<= 后联系清隆解锁~

🍓OJ题目截图

alt

☕️ 小区小朋友统计

问题描述

幼儿园组织了一次活动,老师布置了一个任务:每个小朋友去了解与自己同一个小区的小朋友还有几个。我们将这些数量汇总到数组 中。请根据这些小朋友给出的信息,计算班级小朋友至少来自几个小区。

输入格式

一个数组 ,表示每个小朋友反馈的与自己同一个小区的小朋友数量。

输出格式

一个整数,表示班级小朋友至少来自几个小区。

样例输入

2 2 3

样例输出

7

样例解释

第一个小朋友反馈有两个小朋友和自己同一小区,即此小区有 个小朋友。

第二个小朋友反馈有两个小朋友和自己同一小区,即此小区有 个小朋友。

这两个小朋友,可能是同一s小区的,且此小区的小朋友只有 个人。

第三个小区反馈还有 个小朋友与自己同一小区,则这些小朋友只能是另外一个小区的。这个小区有 个小朋友。

数据范围

  • 数组长度最大为
  • 每个小区的小朋友数量最多 人,也就是 的范围为

题解

题目要求计算班级小朋友至少来自几个小区。可以通过统计每个反馈值出现的次数,并根据反馈值计算每个小区的最小人数,最后累加这些人数得到结果。

参考代码

  • Python
import math

def get_min_communities(garden):
    cnts = {}
    for num in garden:
        cnts[num] = cnts.get(num, 0) + 1

    ans = 0
    for key in cnts.keys():
        total = key + 1
        ans += math.ceil(cnts[key] / total) * total

    return ans

# 输入获取
garden = list(map(int, input().split()))
print(get_min_communities(gard

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

最新华为OD机试-E+D卷 文章被收录于专栏

本专栏给大家提供了华为2024最新华为OD-E/D卷的题目汇总和(Java/Cpp/Python)三语言解析 + 部分题目提供OJ在线评测

全部评论

相关推荐

点赞 评论 收藏
分享
2 2 评论
分享
牛客网
牛客企业服务