藍橋杯-運動員分組

有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

解題思路:定義變量,n個人,分x組,t是餘數,v平均數,a[i]存放平均數 
分情況討論,如果n<=8,那肯定的一組。如果n>8,先用總人數/8求出組數x,n%8求出餘數,這裏還要考慮如果餘數不爲0,則組數要+1。題目要求的是人數相差最少的分組,那首先想到的是平均數吧?那就求一下平均數v=n/x。這時候平均數有了,就差把平均值存起來輸出了,在輸出前還要考慮一個問題,餘數是幾就要有幾個數+1。

代碼實現:

#include<stdio.h>
int main()
{
	
	int n,x,t,v,i,a[10];
	scanf("%d",&n);
	if(n<=8)
	printf("1");
	else
	{
	 x=n/8;
	 t=n%8;
	 if(t!=0)
	   ++x;
	 v=n/x;
	 for(i=1;i<=x;i++)
	 {
		a[i]=v;
		if(i<=t)
		   a[i]+=1;
	    printf("%d\n",a[i]);
	 }	
	}
} 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章