题目:一公司新招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进行分组相关推荐

  1. 伍六七带你学算法 入门篇-卡牌分组

    力扣-914. 卡牌分组 难度-简单 这是一道非常有趣的题,提交通过率令人深思 ,思考它是不是一道简单的题- 开始正题: 给定一副牌,每张牌上都写着一个整数. 此时,你需要选定一个数字 X,使我们可以 ...

  2. 算法最少分组法_数据结构

    20210328 https://blog.csdn.net/sinat_41144773/article/details/89530403 树.二叉树(完全二叉树.满二叉树)概念图解 二叉树:每个结 ...

  3. LeetCode简单题之较大分组的位置

    题目 在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组. 例如,在字符串 s = "abbxxxxzyy" 中,就含有 "a", &q ...

  4. LeetCode简单题之卡牌分组

    题目 给定一副牌,每张牌上都写着一个整数. 此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组: 每组都有 X 张牌. 组内所有的牌上都写着相同的整数. 仅当你可选的 X ...

  5. 2021年大数据Hadoop(二十二):MapReduce的自定义分组

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 MapReduce的自定义分组 需求 分析 实现 第一步: ...

  6. 2021年大数据常用语言Scala(二十六):函数式编程 分组 groupBy

    目录 分组  groupBy 定义 示例 分组  groupBy 我们如果要将数据按照分组来进行统计分析,就需要使用到分组方法 等同于SQL中的 group by的概念, 就是给数据按照指定的列进行分 ...

  7. group by 分组后 返回的是一个同属性的集合

    group by 分组后 返回的是一个同属性的集合  我们可以遍历该集合 转载于:https://www.cnblogs.com/classmethond/p/10164326.html

  8. MFC控件编程之复选框单选框分组框

    MFC控件编程之复选框单选框分组框 一丶分组框 分组框 英文叫做 GroubBox 添加了分组框主要就是分组.好看.不重点介绍 二丶单选框 英文: Raido Button 单选框需要注意的事项 1. ...

  9. 小手段:开启 GNOME 的窗口分组效果

    Toy Posted in Tips 用过 Windows XP 的伴侣除夜要都晓得它有一项分组雷同义务栏按钮的效果,该效果主动将同类窗口的义务按钮折叠为一个单独的按钮,从而无效处置义务栏的窗口拥堵后 ...

  10. C语言程序设计最佳分组,求助把一些数值按指定的和进行分组

    #include #define m 10 //相加之和不超过的数据 #define n 9 //数值的个数 typedef struct { int num; //存储数值 int boolean; ...

最新文章

  1. python中保留两位小数的编写程序_Python中保留两位小数的几种方法
  2. The EF Core tools version '2.1.1-rtm-30846' is older than that of the runtime '2.1.3-rtm-32065'. ...
  3. MPLS自身的优点所带来的网络便捷—Vecloud微云
  4. 服务器被黑给我上了一课
  5. 【开发工具】Jupyter Notebook 的快捷键
  6. 二叉查找树(二)之 C++的实现
  7. 家长会PPT教师的福利模板
  8. Python中修改字符串的四种方法
  9. 滑块 组件_组件制作:如何使用链接的输入创建滑块
  10. Serena Dimensions 介绍
  11. 关于vertical layout不能水平居中对齐的原因
  12. 技术人创业建站简略指南(第一季)
  13. JZOJ 3055. 【NOIP2012模拟10.27】比赛
  14. 营销工作的七项核心能力
  15. spp色散关系 matlab,表面等离极化激元(SPP)基本原理教案分析.ppt
  16. 图论知识及其应用初步调研
  17. FPGA经典设计思想
  18. 以太坊之最全攻略解析与案例分享
  19. CentOS-6.3安装配置Tomcat-7 - Constantin - 博客园
  20. 智能(语音)对话系统架构研究

热门文章

  1. 如何多台电脑同时安装windows系统
  2. DEM_ASTGTMV003_N30E107_num.tif 数据质量文件说明
  3. 香江电器冲刺A股上市:计划募资约6亿元,潘允父子为实控人
  4. 车辆结构——轮胎模型学习
  5. 基于C语言的局域网飞鸽传书软件设计与实现
  6. 周易之阿拉伯几何原本谭
  7. 中基鸿业家庭理财投资计划
  8. xss实现获取网站源码
  9. 融e学 一个专注于重构知识,培养复合型人才的平台【获取考试答案_破解】
  10. 如何解决eps常用编码工具条缺失