1. 程式人生 > >杭電2015題 偶數求和

杭電2015題 偶數求和

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

思路:
1、先取值,再進行迴圈
2、迴圈前考慮設定變數標記空格,sum總值的歸0,和單值的增加
3、最後考慮不足m個時,如何處理
注:每次設定變數時,思考變數的作用域

#include <stdio.h>
int main()
{
    int n, m;
    while(scanf("%d%d", &n, &m) != EOF) 
	{
        int sum=0, ai=2, count=0, i;          //sum表示每m個數的總值,ai表示遞增偶數,count用來標記列印空格
        for(i=1; i<=n; i++)                   //長度為n,表示迴圈n次;
		{                                     
            sum += ai;                        
            ai += 2;                          
            if( i % m == 0)                   //表示每m個數
			{                                 
                count++;                      
                if(count != 1)                //表示輸出第2個值後,開始列印空格
                    printf(" ");              
                printf("%d", sum / m);        //列印平均值
                sum = 0;                      
            }                                 
        }                                     
        if(n % m == 0)                        
            printf("\n");                     
        else                                  
            printf(" %d\n", sum / (n % m));   //最後不足m個,實際數量求m值。注意輸出列印%d前一定要加個" %d"
    }
    return 0;
}