hdoj-2015 偶數求和【水】

偶數求和

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 58769    Accepted Submission(s): 25679


Problem Description
有一個長度爲n(n<=100)的數列,該數列定義爲從2開始的遞增有序偶數,現在要求你按照順序每m個數求出一個平均值,如果最後不足m個,則以實際數量求平均值。編程輸出該平均值序列。
 

Input
輸入數據有多組,每組佔一行,包含兩個正整數n和m,n和m的含義如上所述。
 

Output
對於每組輸入數據,輸出一個平均值序列,每組輸出佔一行。
 

Sample Input
3 2 4 2
 

Sample Output
3 6 3 7
 
 
題目解析:
n<m時 按實際數量求平均值
n>m時
1.n%m==0時 n個數恰好被分成n/m組數據,每組有m個數
2.n%m!=0時,分成n/m+1組數,n/m組每組有m個數,剩下的一組不夠m個數 按實際數量求平均值
這道題另外需要注意的地方就是 輸出時 數與數之間有一個空格。兩種實現輸出的方法:
例:若要輸出n個數,
 
1.數的前面有空格,即把空格和它後面的數看成一個整體
 
printf("%d",m);//數的序號是0--(n-1),先輸出第一個數 
for(i=1;i<n;i++)
	printf(" %d",m);
printf("\n"); 
 
 
2.把空格和它前面的數看成一個整體
 
for(i=1;i<n;i++)//數的序號是1--n,先輸出前n-1個數 
	printf("%d ",m);
printf("%d\n",m);//然後輸出最後一個數 

AC代碼:
 
#include<stdio.h> 
int main()
{
	int n,m,i,j,sum,ans;
	while(~scanf("%d%d",&n,&m))
	{
		int temp=2;
		while(n>=m)//n>m時 若n%m==0恰將數據分成n/m組 否則分成n/m+1組 
		{
			for(i=0;i<n/m;i++)//按m個數輸出平均值的次數 
			{
				sum=0;//每次都要歸0 
				for(j=0;j<m;j++)
				{
					sum+=temp;
					temp+=2;	
				}
				ans=sum/m;
				n-=m;//剩下的 待處理的數 的個數n 
				if(n!=0) 
					printf("%d ",ans);
				else
					printf("%d\n",ans);
				
			}
			
		}
		while(n!=0)
		{
			sum=ans=0;
			for(i=0;i<n;i++)
			{
				sum+=temp;
				temp+=2;
			}
			ans=sum/n;	
			printf("%d",ans);
			printf("\n");
			break;	//否則形成死循環  超時 
		}
		
	}
	return 0;
}


 
發佈了52 篇原創文章 · 獲贊 10 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章