有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;
/* 先將總人數除以8,得到分組數,再將總人數除8取餘,如果大於0,分組數就要再加1。
* 然後用總人數除以分組數得到每組的平均數,再將總人數除以分組數取餘,再將餘數分到每個組。
*/
public class Main
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int peopleNum=sc.nextInt();
int d=8;
int groupNum=peopleNum/8;
if(peopleNum%d>0)
{
groupNum++;
}
int avaNum=peopleNum/groupNum; //每個組平均的人數
int remainNum=peopleNum%groupNum;
for(int i=0;i<groupNum;i++)
{
if(i<remainNum)
{ System.out.println(avaNum+1);}
else
{
System.out.println(avaNum);
}
}
}