题目描述
有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。
输入
输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。程序读入n=0,m=0时停止。
输出
对于每组输入数据,输出一个平均值序列,每组输出占一行。
样例输入
3 2
4 2
0 0
样例输出
3 6
3 7
代码如下:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int index, bag;
cin >> index >> bag;
while (index != 0 && bag != 0)
{
vector<int>shulie(index);
int j, k, sum = 0, sum_ = 0;
for (int i = 0, h = 2; i < index; i++, h += 2)
{
shulie[i] = h;
}
int n = index % bag;
if (n == 0)
{
int n_ = index / bag ;
vector<int>result(n_);
for (int j = 0, k = 0; j < index; j += bag, k++)
{
for (int i = j; i < j + bag; i++)
{
sum += shulie[i];
}
result[k] = sum/bag;
sum = 0;
}
for (int i = 0; i < n_; i++)
{
cout << result[i] << " ";
}
}
else
{
int n_ = index / bag + 1;
vector<int>result(n_);
for (j = 0, k = 0; j < index-n; j += bag, k++)
{
for (int i = j; i <= j + bag-1; i++)
{
sum += shulie[i];
}
result[k] = sum/bag;
sum = 0;
}
for (int d = j; d < index; d++)
{
sum_ += shulie[d];
}
result[n_-1] = sum_/(index-j);
for (int i = 0; i < n_; i++)
{
cout << result[i] << " ";
}
cout << endl;
}
cin >> index >> bag;
}
}