华为od-C卷200分题目1 - 分月饼

华为od-C卷200分题目1 - 分月饼

题目描述

中秋节,公司分月饼,m个员工,买了n个月饼,m<=n,每个员工至少分1个月饼,但可以分多个,
单人分到最多月饼的个数是Max1,单人分到第二多月饼个数是Max2,Max1-Max2<=3,单人分到
第n-1多月饼个数是Max(n-1),单人分到第n多月饼个数是Max(n),Max(n-1)-Max(n)<=3问有
多少种分月饼的方法?输入描述
每一行输入m n,表示m个员工,n个月饼,m<=n输出描述
输出有多少种月饼分法示例1
输入:
2 4输出:
2说明:
分法有2种
4=1+3
4=2+2
注意:1+3和3+1算一种分法
示例2
输入:
3 5输出:
2说明:
5=1+1+3
5=1+2+2
示例3
输入:
3 12输出:
6说明:
满足要求的有6种分法:
12=1+1+10(Max1=10,Max2=1,不满足要求)
12=1+2+9(Max1=9,Max2=2,不满足要求)
12=1+3+8(Max1=8,Max2=3 不满足要求)
12=1+4+7(Max1=7,Max2=4,Max3=1, 满足要求)
12=1+5+6(Max1=6,Max2=5,Max3=1,不满足要求)
12=2+2+8(Max1=8,Max2=2,不满足要求)
12=2+3+7(Max1=7,Max2=3,不满足要求)
12=2+4+6(Max1=6,Max2=4,Max3=2,满足要求)
12=2+5+5(Max1=5,Max2=2,满足要求)
12=3+3+6(Max1=6,Max2=3,满足要求)
12=3+4+5(Max1=5,Max2=4,Max3=3,满足要求)
12=4+4+4(Max1=4,满足要求)

题解

    import java.util.LinkedList;import java.util.Scanner;public class Main {static LinkedList<Integer> list;static int res;static int n, m, base;public static void main(String[] args) {Scanner sc = new Scanner(System.in);n = sc.nextInt();m = sc.nextInt();if(n == 1 ) {System.out.println(1);return;}base = 1;  int least = 3 * n * (n - 1) / 2;  while (base * n + least < m) {base++;}list = new LinkedList<>();res = 0;distribution(0, m);System.out.println(res);}public static void distribution(int index, int sum) {if (index == n - 1) {// 前一个树和最后一个数的差值不能超过3,最后一个数不能为负if (sum >= 0 && sum <= list.get(index - 1) + 3) {res++;}return;}int last, end;if (index == 0) {last = base;        // 如果是第一个数,则从保底开始end = sum / n;        // 第一个数最大为平均分配的大小}else {last = list.get(index - 1); //不是第一个数则从前一个数的最大值end = Math.min(last + 3, sum / (n - index));// 最大值为剩下的人平均分配的平均数和上个数最大值加三中的最小值}for (int i = last;i<= end;i++ ) {list.add(i);distribution(index + 1, sum - i);list.remove(index);}}}

思路:

base * n + least < m

int least = 3 * n * (n - 1) / 2;

分的方式:基础的保底 + 后续的分配,基础的保底就是base * n

base 代表每个人至少分1个月饼,base至少为1

去掉保底部分后剩下的,最大值是等差数列,当你人数确定时,那么最大等差数列就确定了,如果是3 人,则去掉保底部分最大就是9(0 + 3 + 6)。

我们为了防重和方便计算,所以我们第一个数除去保底始终为0

举例3人12月饼和3人13月饼

3人12月饼:减去3个保底,9满足等差数列 ;(3人,12月饼 结果为6)

3人13月饼,减去3个保底,分配的情况为(1, 3, 6)。

那么将保底上升到2,需要计算的情况变为(0, 2, 5); ( 3人,13月饼 结果为5)

以3人为例只要数量超过3人的等差数列9,则可以将多的作为保底,化简问题

所以等差数列部分固定,找到最大的保底数,最大的保底数作为第一个数的最小值

按照等差数列的公式:

(A1 + An) * (n) / 2 => 可以得到 (0 + (0 + (n - 1) * d) * n / 2 => (n - 1) * n * 3 / 2

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

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

相关文章

信息论与大数据安全知识点

文章目录 第一章 绪论&#xfffc;大数据概述大数据安全与加密技术 安全存储与访问控制技术访问控制概念早期的四种访问控制模型局限性总结 大数据场景下的访问控制技术 安全检索技术密文检索基础 安全处理技术同态加密 隐私保护技术 第一章 绪论&#xfffc; 大数据概述 大数…

川湘菜店该如何选择合适的油烟净化器?

我最近分析了餐饮市场的油烟净化器等产品报告&#xff0c;解决了餐饮业厨房油腻的难题&#xff0c;更加方便了在餐饮业和商业场所有需求的小伙伴们。 川湘菜以其浓郁的香味和丰富的口感&#xff0c;深受广大食客的喜爱。然而&#xff0c;川湘菜烹饪过程中产生的油烟量也相对较…

分班查询,一键发布,老师们都在用的分班查询系统

老师们开学季马上又要到了&#xff0c;回想起了每年埋头苦干&#xff0c;对着一堆堆的学生名单&#xff0c;一个个手动分配班级&#xff0c;再一个个通知家长和学生的日子&#xff0c;那种手忙脚乱&#xff0c;生怕出错的紧张感&#xff0c;是不是还历历在目&#xff1f;每次分…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] LYA 的幸运游戏(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

三个“消失” 折射债市新变化

资金分层现象逐步消失&#xff1b;低位的DR007利率已不常见&#xff1b;债市中一度盛行的“滚隔夜”也在逐渐减少。 当前&#xff0c;债券市场正在出现一系列显著变化&#xff1a;资金分层现象逐步消失&#xff1b;低位的DR007利率已不常见&#xff1b;债市中一度盛行的“滚隔…

AI与墨水:探索写作的未来趋势

随着人工智能技术的飞速发展&#xff0c;AI写作已经成为现实&#xff0c;并逐渐渗透到我们生活的方方面面。从新闻报道到创意写作&#xff0c;从社交媒体内容到学术论文&#xff0c;AI写作的应用范围越来越广泛。本文将探讨AI写作的未来发展趋势&#xff0c;展望这一技术将如何…

STM32自己从零开始实操06:无线电路原理图

一、WIFI 模块电路设计 1.1指路 延续使用 ESP-12S 芯片&#xff0c;封装 SMD 16x24mm。 实物图 原理图与PCB图 2.2电路图 电路较为简单&#xff0c;如下图&#xff1a; 2.2.1引脚说明 序号引脚名称描述1RST复位复位引脚&#xff0c;低电平有效3EN使能芯片使能端&#xff0c…

【华为HCIA数通网络工程师真题-数据通信与网络基础】

文章目录 选择题判断题 选择题 1、在 VRP 平台上&#xff0c;可以通过下面哪种方式访向上条历史命令&#xff1f; 上光标 &#xff08;ctrlU 为自定义快捷键&#xff0c;ctrlP 为显示历史缓存区的前一条命令&#xff0c;左光标为移动光标&#xff09; 2、主机 A &#xff08;1…

Leetcode Hot100之滑动窗口

滑动窗口题目的特点如下&#xff0c;经常用于解决字符串的子串问题 滑动窗口通过双指针指定窗口的左右边界;通过某种数据结构存储窗口中的元素&#xff0c;数据结构的形式具体问题具体分析&#xff0c;经常是set、dict等&#xff1b;窗口的右边界匀速扩张&#xff0c;而左边界…

TVS的原理及选型

目录 案例描述 TVS管的功能与作用&#xff1a; TVS选型注意事项&#xff1a; 高速TVS管选型 最近项目中遇到TVS管选型错误的问题。在此对TVS的功能及选型做一个分享。 案例描述 项目中保护指标应为4-14V&#xff0c;而选型的TVS管位SMJ40CA&#xff0c;其保护电压为40V未…

网络学习(15)|有http/1为什么还会有http/2

HTTP/1&#xff08;具体来说是HTTP/1.1&#xff09;在互联网的早期阶段是非常成功的&#xff0c;它标准化了客户端和服务器之间的请求-响应模型&#xff0c;使得Web能够迅速扩展和普及。然而&#xff0c;随着Web的复杂性和流量的增加&#xff0c;HTTP/1.1的一些设计上的局限性开…

《计算广告》第3版读书笔记

1.基本概念 &#xff08;1&#xff09;效果广告:马上带来大量的购买或其他转化行为&#xff0c;即短期看到效果的广告。比如李佳琦头部直播卖货。 &#xff08;2&#xff09;品牌广告:宣传品牌形象&#xff0c;提升中长期购买率与利润空间。比如杨紫代言。 &#xff08;3&am…

python创建虚拟环境venv

为什么要创建虚拟环境 使用python创建虚拟环境是为了让项目的依赖隔离开来&#xff0c;互不干扰&#xff0c;使得每个项目都运行在一个独立的Python环境中。 创建虚拟环境 1. 命令行创建 step1. 创建 # 1. 进入到你的项目目录中 cd myproject # 使用python创建一个虚拟环境…

音视频入门基础:H.264专题(1)——H.264官方文档下载

音视频入门基础&#xff1a;H.264专题系列文章&#xff1a; 音视频入门基础&#xff1a;H.264专题&#xff08;1&#xff09;——H.264官方文档下载 音视频入门基础&#xff1a;H.264专题&#xff08;2&#xff09;——使用FFmpeg命令生成H.264裸流文件 音视频入门基础&…

DDMA信号处理以及数据处理的流程---距离速度测量

Hello,大家好,我是Xiaojie,好久不见,欢迎大家能够和Xiaojie一起学习毫米波雷达知识,Xiaojie准备连载一个系列的文章—DDMA信号处理以及数据处理的流程,本系列文章将从目标生成、信号仿真、测距、测速、cfar检测、测角、目标聚类、目标跟踪这几个模块逐步介绍,这个系列的…

Python和Java怎么选择?

Python和Java的较量一年又一年地持续&#xff0c;那么要怎么选择学习哪种编程语言呢&#xff1f; 两种语言在不同的应用场景中都能展现出强大的能力&#xff0c;几乎涵盖了所有其他编程语言所能实现的功能&#xff0c;包括但不限于网站开发、图形用户界面设计、图像处理、大数…

完整迁移方案+工具:Citrix替换,无感迁移!

随着用户的替换进程进入到演进的阶段&#xff0c;用户面临的重大挑战包括&#xff1a; &#xff08;1&#xff09;大量数据的迁移需要精确规划&#xff0c;以避免数据丢失或损坏&#xff1b; &#xff08;2&#xff09;迁移效率低下&#xff0c;不仅会增加迁移成本&#xff0c;…

B端系统的UI框架选择,不要输在了起跑线,如何破?

所谓成也框架、败也框架&#xff0c;框架就是这么的优点和缺点鲜明&#xff0c;市面上的框架多如牛毛&#xff0c;谁家的最优秀呢&#xff1f;为何框架搞出来的UI界面同质化呢&#xff0c;如何避免这种情况&#xff0c;如何在框架的基础上进一步提升颜值和体验呢&#xff0c;本…

LabVIEW回热系统热经济性分析及故障诊断

开发了一种利用LabVIEW软件的电厂回热系统热经济性分析和故障诊断系统。该系统针对火电厂回热加热器进行优化&#xff0c;通过实时数据监控与分析&#xff0c;有效提高机组的经济性和安全性&#xff0c;同时降低能耗和维护成本。系统的实施大幅提升了火电厂运行的效率和可靠性&…

MyBatis-RedisCache源码分析

回顾 在前面&#xff0c;我们通过 redis​ 集成了 MyBatis​ 的二级缓存&#xff0c;MyBatis的二级缓存整合redis &#xff0c;接下来&#xff0c;我们来分析一下 RedisCache​ 的源码。 源码分析 RedisCache 主要是通过实现 Cache 接口来做的。数据存储和获取主要是通过操作…