杭电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

#include

main()

{

int a[100]={0},b[50]={0};

int n,m,i,j,time,sum;

while(scanf("%d%d",&n,&m)!=EOF)

{

if(n<=100)

{

a[0]=2;

for(i=0;i

{

a[i+1]=a[i]+2;//输入有序偶数序列

}

time=n/m;

if(n%m!=0)

{

time=time+1;//最后不足m项时的计算次数

}

for(j=0;j

{

sum=0;

for(i=0;i+j*m<(j+1)*m;i++)

{

sum=sum+a[i+j*m];//计算每m项的平均值 ,这里要特别注意每项数,否则会赋错值的位置

}

if(n%m!=0)

{

if(j==time-1)

b[j]=sum/(n-(time-1)*m);//不足m项时的平均值

else b[j]=sum/m;

}

else b[j]=sum/m;//每m项的平均值

}

for(j=0;j

{

if(j>=1)

{

printf(" ");

}

printf("%d",b[j]);//输出每m项的平均值

}

printf("\n");

for(i=0;i

{

a[i]=0;

}

}

}

}

这道题比较麻烦的就是他的循环结构太多了,容易出错。以后,在碰到类似的题时要多注意这方面的问题。

你可能感兴趣的:(杭电2015)