题目描述
有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数(公差为2的等差数列),现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。
输入
输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。
输出
对于每组输入数据,输出一个平均值序列,每组输出占一行
思路
起初我是想找规律的……根据第一个和最后一个数字……然后放弃了。
这道题常规做法是算出大概需要计算几次平均值,判断最后一次计算平均值时,数字有没有m个,每一次计算平均值时进行累加操作,从而求出平均值。
代码
#include<stdio.h>
int main()
{
int n, m, num, count, i, j, sum, ave;
while(scanf("%d %d", &n, &m) == 2)
{
count = n / m;
num = 2;
for(i = 0; i < count; i++)
{
sum = 0;
for(j = 0; j < m; j++)
{
sum += num;
num += 2;
}
ave = sum / m;
printf("%d ", ave);
}
sum = 0;
if(n % m != 0)
{
for(j = 0; j < (n % m); j++)
{
sum += num;
num += 2;
}
ave = sum / (n % m);
printf("%d\n", ave);
}
else
{
printf("\n");
}
}
return 0;
}