/*
有N个人参加100米短跑比赛。跑道为8条。程序的任务是按照尽量使每组的人数相差最少的原则分组。
例如:
N=8时,分成1组即可。
N=9时,分成2组:一组5人,一组4人。
N=25时,分4组:7、6、6、6。
请编程计算分组数字。
要求从标准输入获得一个正整数(1~100之间,不必考虑输入错误的情况),表示参赛的人数。
程序输出每个组的人数。从大到小顺序输出,每个数字一行。*/
#include<iostream.h>
#define TRACK_NUM 8
#define MAX_TEAM 100
int personNum;
int teamNum;
int remainder;
int personOfTeam[MAX_TEAM];
void fenzu(int personNum)
{
if(personNum%8==0)
{
for(int i=0;i<personNum/8;i++)
{
personOfTeam[i]=8;
cout<<personOfTeam[i]<<endl;
}
}
else{
teamNum=personNum/TRACK_NUM+1;
if(teamNum==1)
{
personOfTeam[0]=personNum;
}
else{
remainder=personNum%teamNum;
for(int i=0;i<teamNum;i++)
{
personOfTeam[i]=personNum/teamNum;
}
for(i=0;i<remainder;i++)
{
personOfTeam[i]++;
}
}
}
for(int i=0;i<teamNum;i++)
{
cout<<personOfTeam[i]<<endl;
}
}
int main()
{
cin>>personNum;
fenzu(personNum);
return 0;
}