小朋友来自多少小区 - 华为OD统一考试(C卷)

OD统一考试(C卷)

分值: 100分

题解: Java / Python / C++

alt

题目描述

幼儿园组织活动,老师布置了一个任务:

每个小朋友去了解与自己同一个小区的小朋友还有几个。

我们将这些数量汇总到数组 garden 中。

请根据这些小朋友给出的信息,计算班级小朋友至少来自几个小区?

输入描述

输入:garden[] = {2, 2, 3}

说明:

  • garden 数组长度最大为 999
  • 每个小区的小朋友数量最多 1000 人,也就是 garden[i] 的范围为 [0, 999]

输出描述

输出:7

示例1

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

题解

本题出的有误,输出其实是至少的小朋友数量,而不是班级小朋友至少来自几个小区。

通过例子来说明:

garden = {2,2} // 可能来自同一个小区, 学生人数 = 1(自己) + 2(其他小朋友个数)

graden = {2,2,2} // 可能来自同一个小区, 学生人数 = 1(自己) + 2(其他小朋友个数)

graden = {2,2,2,2} // 不可能来自同一个小区, 至少来自 2 个小区, 学生人数 = 2 * (1 + 2)

假如有 v 个小朋友说来自其他小区小朋友有 k 个:

  • 则至少有小区个数: v / (k + 1) 向上取整 == (v + k) / (k + 1)
  • 则每个小区的人数: 1(自己) + k(其他小朋友人数)
  • 则至少小朋友数: (v + k) / (k + 1) * ( k + 1)

根据以上的总结, 就可以对小朋友给出的数据进行统计, 统计完后再根据统计数据计算出总的学生人数。

Java

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
/*** @author code5bug*/
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);Map<Integer, Integer> cnt = new HashMap<>();// 读取输入并统计数字出现次数while (scanner.hasNextInt()) {int t = scanner.nextInt();cnt.put(t, cnt.getOrDefault(t, 0) + 1);}int tot = 0;// 遍历统计结果for (Map.Entry<Integer, Integer> entry : cnt.entrySet()) {int k = entry.getKey();int v = entry.getValue();// 计算小区个数,向上取整int group = (v + k) / (k + 1);// 计算总人数tot += group * (k + 1);}System.out.println(tot);}
}

Python

from collections import defaultdictdef main():cnt = defaultdict(int)  # 使用 defaultdict 初始化计数字典tot = 0# 统计每个数出现的次数for t in list(map(int, input().split())):cnt[t] += 1# 遍历计数字典,计算总人数for k, v in cnt.items():group = (v + k) // (k + 1)  # 小区个数,向上取整tot += group * (k + 1)       # 每个小区人数(k + 1)print(tot)if __name__ == "__main__":main()

C++

以下是将 Java 代码翻译成 Python 的版本,并在关键代码上添加注释:
#include <bits/stdc++.h>
using namespace std;int main()
{unordered_map<int, int> cnt;int                     t;while (cin >> t) {cnt[t]++;}int tot;for (const auto& it : cnt) {int k = it.first, v = it.second;int group = (v + k) / (k + 1);   // 小区个数,向上取整tot += group * (k + 1);          // 每个小区人数(k + 1)}cout << tot << endl;return 0;
}

🙏整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/504896.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【自动驾驶技术系列丛书学习】1.《自动驾驶技术概论》学习笔记

《自动驾驶技术概论》学习笔记 致谢&#xff1a;作者&#xff1a;王建、徐国艳、陈竞凯、冯宗宝 本书主要介绍汽车构造和无人驾驶汽车的基本概念&#xff0c;从基础开始&#xff0c;由浅入深地了解无人驾驶的历史由来、国内外自动驾驶产业现状及技术发展、自动驾驶汽车的技术架…

算法------(13)KMP

例题&#xff1a;&#xff08;1&#xff09;AcWing 831. KMP字符串 。。其实写完也不太理解。。随便写点吧 KMP就是求next数组和运用next的数组的过程。相比传统匹配模式一次更新一单位距离的慢速方法&#xff0c;next数组可以让下表字符串一次更新n - next【n】个距离&#x…

【研发日记】Matlab/Simulink技能解锁(三)——在Stateflow编辑窗口Debug

文章目录 前言 State断点 Transition断点 条件断点 按State步进 Watch Data Value Sequence Viewer 分析和应用 总结 前言 见《【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug》 见《【研发日记】Matlab/Simulink技能解锁(二)——在Function编辑…

MATLAB图像噪声添加与滤波

在 MATLAB 中添加图像噪声和进行滤波通常使用以下函数&#xff1a; 添加噪声&#xff1a;可以使用imnoise函数向图像添加各种类型的噪声&#xff0c;如高斯噪声、椒盐噪声等。 滤波&#xff1a;可以使用各种滤波器对图像进行滤波处理&#xff0c;例如中值滤波、高斯滤波等。 …

基于CNN-LSTM-Attention的时间序列回归预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1卷积神经网络&#xff08;CNN&#xff09;在时间序列中的应用 4.2 长短时记忆网络&#xff08;LSTM&#xff09;处理序列依赖关系 4.3 注意力机制&#xff08;Attention&#xff09; 5…

JVM垃圾回收详解

JVM垃圾回收详解 JavaGuide JDK7版本以及JDK7版本之前&#xff0c;堆内存通常分为下面三部分&#xff1a; 新生代&#xff08;年轻代&#xff09;内存老年代永久代 下图中的Eden区、两个S区S0、S1都属于新生代 JDK8版本之后永久代被元空间取代&#xff0c;元空间使用的是直…

洛谷题单_递推与递归

P1255 数楼梯 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) //不满分做法&#xff1a;没有高精度 #include <bits/stdc.h> using namespace std; const int N5006; int dp[N];//dp[i]表示到第i节楼梯有dp[i]中方案 int main(){int n;cin>>n;dp[1]1;dp[0]1;for(i…

Docker实战——网络通信

目录 一、Docker 容器网络通信的基本原理1、查看 Docker 容器网络&#xff08;1&#xff09;新建一个 Dockerfile文件&#xff0c;内容如下&#xff1a;&#xff08;2&#xff09;使用以下命令创建镜像&#xff08;3&#xff09;基于 debian 的镜像创建一个容器&#xff0c;并进…

[C++]AVL树怎么转

AVL树是啥 一提到AVL树&#xff0c;脑子里不是旋了&#xff0c;就是悬了。 AVL树之所以难&#xff0c;并不是因为结构难以理解&#xff0c;而是因为他的旋转。 AVL树定义 平衡因子&#xff1a;对于一颗二叉树&#xff0c;某节点的左右子树高度之差&#xff0c;就是该节点的…

第三百七十八回

文章目录 1. 概念介绍2. 实现方法2.1 maskFilter2.2 shader 3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"两种阴影效果"相关的内容&#xff0c;本章回中将介绍如何绘制阴影效果.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概…

【C++庖丁解牛】类与对象

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.面向过程和面向对象…

构建大语言模型的四个主要阶段

大规模语言模型的发展历程虽然只有短短不到五年的时间&#xff0c;但是发展速度相当惊人&#xff0c;国内外有超过百种大模型相继发布。中国人民大学赵鑫教授团队在文献按照时间线给出 2019 年至 2023 年比较有影响力并且模型参数量超过 100 亿的大规模语言模型。大规模语言模型…