N个人,按M进行分组
题目:一公司新招N个人,按M进行分组。每一组将单独进行培训,组与组之间不能交流,由此引发一个问题:同一组的每个人相互之间都会成为朋友,而不同组的人相互之间不能成为朋友(培训期间)。如果第i组有a[i]个人,那么这一组将会有b[i]=a[i]*(a[i]-1)/2对朋友。请问如何分组才能使得b[i]的和最大,又如何分组才能使得b[i]的和最小呢?
输入N,M两个正整数(1<=m<=n<=10 0000 0000)
输出b[i]和最小值及b[i]和最大值,用空格分开。
public static String resultSum(int n, int m) {if (n < m) {return null;}//n个人 m个分组int maxSum = 0;//b[i]和的最大值int minSum = 0;//b[i]和的最小值//sum 最大值时 n-m+1 这一组人数最多,其它组人数都为1maxSum = (n - m + 1) * (n - m + 1 - 1) / 2;//minSum最小值时,每个组分得人数跟平均数最接近n/mBoolean isAliquot = n % m == 0 ? true : false; // 判断n/m是否能整除 能整除true 不能整除falseif (isAliquot) {minSum = (n / m) * (n / m - 1) / 2 * m;//如果能整除,说明n个人可以平均地分成m组,则每组有n/m个人,当前组则有(n/m)*(n/m-1)/2对朋友,最小值为:当前组的多少对朋友*m组} else {//如果不能整除时int average = n / m; //每组平均数,这里会存在向下取整,所以平均数会小int[] mm = new int[m]; //定义 一个数组表示,每组的人数for (int i = 0; i < mm.length; i++) {mm[i] = average;//初始化数组}int differ = n - average * m;//相差多少for (int i = 0; i < differ; i++) {mm[i]++; //把相差的数加回来}//计算minSumfor (int i = 0; i < mm.length; i++) {minSum += mm[i] * (mm[i] - 1) / 2;}}//sum 最小值时 n/mreturn minSum + " " + maxSum;}
N个人,按M进行分组相关推荐
- 伍六七带你学算法 入门篇-卡牌分组
力扣-914. 卡牌分组 难度-简单 这是一道非常有趣的题,提交通过率令人深思 ,思考它是不是一道简单的题- 开始正题: 给定一副牌,每张牌上都写着一个整数. 此时,你需要选定一个数字 X,使我们可以 ...
- 算法最少分组法_数据结构
20210328 https://blog.csdn.net/sinat_41144773/article/details/89530403 树.二叉树(完全二叉树.满二叉树)概念图解 二叉树:每个结 ...
- LeetCode简单题之较大分组的位置
题目 在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组. 例如,在字符串 s = "abbxxxxzyy" 中,就含有 "a", &q ...
- LeetCode简单题之卡牌分组
题目 给定一副牌,每张牌上都写着一个整数. 此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组: 每组都有 X 张牌. 组内所有的牌上都写着相同的整数. 仅当你可选的 X ...
- 2021年大数据Hadoop(二十二):MapReduce的自定义分组
全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 MapReduce的自定义分组 需求 分析 实现 第一步: ...
- 2021年大数据常用语言Scala(二十六):函数式编程 分组 groupBy
目录 分组 groupBy 定义 示例 分组 groupBy 我们如果要将数据按照分组来进行统计分析,就需要使用到分组方法 等同于SQL中的 group by的概念, 就是给数据按照指定的列进行分 ...
- group by 分组后 返回的是一个同属性的集合
group by 分组后 返回的是一个同属性的集合 我们可以遍历该集合 转载于:https://www.cnblogs.com/classmethond/p/10164326.html
- MFC控件编程之复选框单选框分组框
MFC控件编程之复选框单选框分组框 一丶分组框 分组框 英文叫做 GroubBox 添加了分组框主要就是分组.好看.不重点介绍 二丶单选框 英文: Raido Button 单选框需要注意的事项 1. ...
- 小手段:开启 GNOME 的窗口分组效果
Toy Posted in Tips 用过 Windows XP 的伴侣除夜要都晓得它有一项分组雷同义务栏按钮的效果,该效果主动将同类窗口的义务按钮折叠为一个单独的按钮,从而无效处置义务栏的窗口拥堵后 ...
- C语言程序设计最佳分组,求助把一些数值按指定的和进行分组
#include #define m 10 //相加之和不超过的数据 #define n 9 //数值的个数 typedef struct { int num; //存储数值 int boolean; ...
最新文章
- python中保留两位小数的编写程序_Python中保留两位小数的几种方法
- The EF Core tools version '2.1.1-rtm-30846' is older than that of the runtime '2.1.3-rtm-32065'. ...
- MPLS自身的优点所带来的网络便捷—Vecloud微云
- 服务器被黑给我上了一课
- 【开发工具】Jupyter Notebook 的快捷键
- 二叉查找树(二)之 C++的实现
- 家长会PPT教师的福利模板
- Python中修改字符串的四种方法
- 滑块 组件_组件制作:如何使用链接的输入创建滑块
- Serena Dimensions 介绍
- 关于vertical layout不能水平居中对齐的原因
- 技术人创业建站简略指南(第一季)
- JZOJ 3055. 【NOIP2012模拟10.27】比赛
- 营销工作的七项核心能力
- spp色散关系 matlab,表面等离极化激元(SPP)基本原理教案分析.ppt
- 图论知识及其应用初步调研
- FPGA经典设计思想
- 以太坊之最全攻略解析与案例分享
- CentOS-6.3安装配置Tomcat-7 - Constantin - 博客园
- 智能(语音)对话系统架构研究