小朋友来自多少小区 - 华为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.mzph.cn/news/714899.shtml

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

相关文章

数据库-第四/五章 数据库安全性和完整性【期末复习|考研复习】

前言 总结整理不易&#xff0c;希望大家点赞收藏。 给大家整理了一下计数据库系统概论中的重点概念&#xff0c;以供大家期末复习和考研复习的时候使用。 参考资料是王珊老师和萨师煊老师的数据库系统概论(第五版)。 文章目录 前言4 第四章 数据库安全性4.1 数据库安全性定义4.…

学生宿舍管理小程序|基于微信小程序的学生宿舍管理系统设计与实现(源码+数据库+文档)

学生宿舍管理小程序目录 目录 基于微信小程序的学生宿舍管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员模块的实现 &#xff08;1&#xff09;学生信息管理 &#xff08;2&#xff09;公告信息管理 &#xff08;3&#xff09;宿舍信息管理 &am…

git clone http/https 报错 10054/443 问题

文章目录 错误解决方案1 关闭http和https代理2 设置自己的代理 错误 错误 Failed to connect to github.com port 443: Timed out OpenSSL SSL_read: Connection was reset, errno 10054 一般都是网络问题 解决方案 1 关闭http和https代理 git config --global --unset htt…

《系统架构设计师教程(第2版)》第5章-软件工程基础知识-05-净室软件工程(CSE)

文章目录 1. 概述2. 理论基础2.1 函数理论2.2 抽样理论 3. 技术手段3.1 增量式开发3.2 基于函数的规范与设计3.3 正确性验证3.4 统计测试 (Statistically Based Testing) 和软件认证 4. 应用与缺点1&#xff09;太理论化2&#xff09;缺少传统模块测试3&#xff09;带有传统软件…

UE学习笔记--解决滚轮无法放大蓝图、Panel等

我们发现有时候创建蓝图之后&#xff0c;右上角的缩放是1&#xff1a;1 但是有时候我们可能需要放的更大一点。 发现一直用鼠标滚轮像上滚动&#xff0c;都没有效果。 好像最大只能 1&#xff1a;1. 那是因为 UE 做了限制。如果希望继续放大&#xff0c;我们可以按住 Ctrl 再去…

StarRocks实战——携程酒店实时数仓

目录 一、实时数仓 二、实时数仓架构介绍 2.1 Lambda架构 2.2 Kappa架构 三、携程酒店实时数仓架构 3.1 架构选型 3.2 实时计算引擎选型 3.3 OLAP选型 四、携程酒店实时订单 4.1 数据源 4.2 ETL数据处理 4.3 应用效果 4.4 总结 原文大佬的这篇实时数仓建设案例有借…

【计算机网络_应用层】TCP应用与相关API守护进程

需要云服务器等云产品来学习Linux的同学可以移步/–>腾讯云<–/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;优惠多多。&#xff08;联系我有折扣哦&#xff09; 文章目录 1. 相关使用接口2. 代码实现2.1 日志组件2.2 Server端2.3 Client端2.3 bug解决 3. 守…

什么是依赖注入(Dependency Injection)?它在 C++ 中是如何实现的?

什么是依赖注入&#xff08;Dependency Injection&#xff09;&#xff1f;它在 C 中是如何实现的&#xff1f; 依赖注入&#xff08;Dependency Injection&#xff0c;DI&#xff09;是一种设计模式&#xff0c;用于减少软件组件之间的耦合度&#xff0c;提高代码的可测试性、…

JVM类加载机制以及双亲委派模型的介绍

目录 1.类加载介绍 2.具体步骤 2.1加载 2.2验证 2.3准备 2.4解析 2.5初始化 3.加载过程中的策略-双亲委派模型 1.类加载介绍 类加载,指的是Java进程在运行的时候,把.class文件从硬盘读取到内存,并进行一系列校验解析的过程. .class文件>类对象.硬盘>内村 类加载…

spring-boot自定义网站头像(favicon.ico文件)

一、将ico文件存放到resources目录的static中的favicon下。 二、在application.properties文件中增加配置 spring.mvc.favicon.enabledfalse 三、如需页面引用如下&#xff1a; <link rel"icon" type"image/x-icon" ref"${request.contextPat…

智能驾驶规划控制理论学习03-基于采样的规划方法

目录 一、基于采样的规划方法概述 二、概率路图&#xff08;PRM&#xff09; 1、核心思想 2、实现流程 3、算法描述 4、节点连接处理 5、总结 三、快速搜索随机树&#xff08;RRT&#xff09; 1、核心思想 2、实现流程 3、总结 4、改进RRT算法 ①快速搜索随机图&a…

【计算机网络实践】在windows上配置Xshell和Xftp连接Ubuntu系统

hebut的课下作业&#xff0c;学习使用Xshell和Xftp连接Linux系统 1. 软件需求 Windows10/11、已安装VM虚拟机的ubuntu系统、Xshell、Xftp。 Xshell和Xftp在家庭/学校免费 - NetSarang Website (xshell.com)里面可以下载到&#xff0c;上面需要的两个软件都在&#xff0c;官网免…

运筹学_1.1.2 线性规划问题-图解法

1.1.2 线性规划问题-图解法 一、图解法求解步骤&#xff08;只适用于两个决策变量问题&#xff09;二、图解法作图实例三、图解法分析线性规划几种解的情况1、唯一最优解2、无穷多最优解3、无界解4、无解或无可行解 四、图解法的几点启示 一、图解法求解步骤&#xff08;只适用…

C++sort排序

前言&#xff1a; C语言的sort函数是一类用于数组排序的函数以下是其简单的使用&#xff1a; 1.头文件&#xff1a; #include<algorithm> 2.使用命名空间&#xff1a; using namespace std; 3.函数形式&#xff1a; sort(数组名,数组名元素个数,排序函数); 默认排…

深入浅出Redis(一):对象与数据结构

引言 Redis是一款基于键值对的数据结构存储系统&#xff0c;它的特点是基于内存操作、单线程处理命令、IO多路复用模型处理网络请求、键值对存储与简单丰富的数据结构等等 这篇文章主要围绕Redis中的对象与数据结构来详细说明键值对存储与简单丰富的数据结构这两大特点 Redi…

运筹学_1.1.4 线性规划问题-解的概念

1.1.4 线性规划问题-解的概念 一、可行解与最优解二、基的概念三、基变量、基向量&#xff1b;非基变量、非基向量&#xff1b;基解、基可行解&#xff1b;四、最优解与可行解、基可行解的关系五、用例题&#xff08;枚举法&#xff09;巩固基解、基可行解、最优解三个概念1、例…

flyway实战

flyway是一款用来管理数据库版本的工具框架 一, 添加依赖 <dependency><groupId>org.flywaydb</groupId><artifactId>flyway-core</artifactId> </dependency> <dependency><groupId>org.springframework</groupId>&l…

第十一届蓝桥杯省赛第一场C++ A组 / B组《网络分析》(c++)

1.题目说明 小明正在做一个网络实验。 他设置了 n 台电脑&#xff0c;称为节点&#xff0c;用于收发和存储数据。 初始时&#xff0c;所有节点都是独立的&#xff0c;不存在任何连接。 小明可以通过网线将两个节点连接起来&#xff0c;连接后两个节点就可以互相通信了。 两…

代码随想录算法训练营第二十五天 | 216.组合总和III 17.电话号码的字母组合

216.组合总和III https://programmercarl.com/0216.%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8CIII.html#%E5%85%B6%E4%BB%96%E8%AF%AD%E8%A8%80%E7%89%88%E6%9C%AC class Solution:def combinationSum3(self, k: int, n: int) -> List[List[int]]:result [] # 存放结果集sel…

实现一个移动端焦点轮播图

HTML结构&#xff1a; 创建一个轮播图的容器&#xff0c;并在其中放置轮播图片。 <div id"carousel"> <div class"carousel-item active"> <img src"image1.jpg" alt"Image 1"> </div> <div class&q…