杭电oj 偶数求和

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
 
 
我的方法是:先定义一个数组,把偶数序列放进去。然后通过循环进行判断,
j==m&&i!=n  就说明sum加到了m个中的最后一个,然后把标志j复位,sum清0,t的作用是用来计算前面有多少个m组,后面如果不够一个组,可以用
(n-t*m)来表示最后一组的组数。
注意在完成一次输出之后,必须要把sum,t,j清0,否则会影响下一次的计算。
#include 
#include 

int main()
{
    int a[101],i,n,j=0,m,t=0;
    int sum=0;
    for(i=1;i<101;i++)
        a[i]=2*i;
    while(scanf("%d",&n)!=EOF)
    {
        scanf("%d",&m);
        for(i=1;i<=n;i++)
        {
            sum = sum+a[i];
            j++;
            if(j==m&&i!=n)
                {
                    printf("%d ",sum/m);sum=0;t++;j=0;
                }
            if(i==n)
                {
                    printf("%d\n",sum/(n-t*m));
                }
        }
        sum=0;
        j=0;
        t=0;
    }
    return 0;
}

 

 

你可能感兴趣的:(杭电oj 偶数求和)