/* 运动员分组
有N个人参加100米短跑比赛。跑道为8条。程序的任务是按照尽量使每组的人数相差最少的原则分组。
例如:
N=8时,分成1组即可。
N=9时,分成2组:一组5人,一组4人。
N=25时,分4组:7、6、6、6。
请编程计算分组数字。
要求从标准输入获得一个正整数(1~100之间,不必考虑输入错误的情况),表示参赛的人数。
程序输出每个组的人数。从大到小顺序输出,每个数字一行。
比如,
用户输入:25
程序输出:
7
6
6
6
*/
import java.util.Scanner;
public class 运动员分组 {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("输入一个正整数(1~100之间),表示参赛的人数。");
int n = scan.nextInt();
int g = (n+7)/8; // 分组数 g
if(g>8) g = 8; // 超过8的直接分8组
int num = n/g; // 每组人数(g-1)个num
int r = n%g; // 分组 余数 r
for(int i=0;i<r;i++){ // 余数均分
System.out.println(num+1);
}
for(int i=0;i<g-r;i++){ // 输出剩下的
System.out.println(num);
}
}
}
运行结果:
输入一个正整数(1~100之间),表示参赛的人数。
25
7
6
6
6