偶数求和
问题描述
有一个长度为n个(n <= 100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每米个数求出一个平均值,如果最后不足米个,则以实际数量求平均值。编程输出该平均值序列。
输入
输入数据有多组,每组占一行,包含两个正整数Ñ和M,N和米的含义如上所述。
输出
对于每组输入数据,输出一个平均值序列,每组输出占一行。
样本输入
3 2
4 2
样本输出
3 6
3 7
问题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2015
问题分析:每m个数求平均值,若不够m个数,则输出最后一个数。定义一个数,赋值为2,count初始值为0,每m个数之后,count++,当count!=1时,输出空格。(在输出一个平均值之后)。当n不是m的倍数时,要输出最后一项。
注意:输出控制 各项间有间隔空格,行最后没有空格。
#include<stdio.h>
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
int sum=0,x=2,count=0,i; //count初始化为0,x赋值为2,从2开始的递增有序偶数
for(i=1;i<=n;i++)
{
sum+=x;
x+=2; //递增有序偶数
if(i%m==0) //每m个数输出一个平均值
{
count++;
if(count!=1)
printf(" "); //在输出平均值之后输出空格
printf("%d",sum/m);
sum=0; //清空求和项
}
}
if(n%m==0) //如果n是m的倍数,最后一项已经通过平均值输出,换行
printf("\n");
else
printf(" %d\n",sum/(n%m)); //否则,输出最后一项,换行
}
return 0;
}