1. 前言
偶数求和
2.题目
题目描述
有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数(公差为2的等差数列),现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。
输入格式
输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。
输出格式
对于每组输入数据,输出一个平均值序列,每组输出占一行
样例输入
3 2 4 2
样例输出
3 6 3 7
使用语言不限
解决办法
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
void updateData(vector<int> &data, size_t data_n)
{
if (data.size() < data_n)
{
for (size_t i = data.size(); i < data_n; i++)
{
data.push_back(2 + i * 2);
}
}
else if (data.size() > data_n)
{
data.erase(data.begin() + data_n, data.end());
}
}
void gteOutData(vector<int> &data, size_t data_m)
{
size_t temp_size = data.size() - 1;
int temp_sum = 0;
size_t i = 0, temp_n = 0;
while (i <= temp_size)
{
temp_n = i + data_m;
temp_sum = 0;
if (temp_n <= temp_size)
{
for (i; i < temp_n; i++)
{
temp_sum += data.at(i);
}
cout << temp_sum / data_m << ' ';
}
else
{
temp_n = i;
for (i; i <= temp_size; i++)
{
temp_sum += data.at(i);
}
cout << temp_sum / (i - temp_n) << ' ';
}
}
}
int main()
{
int N, M, indx = 0;
vector<vector<int>> data_number(0, vector<int>(2));
data_number.reserve(10);
vector<int> data;
data.reserve(100);
while (cin >> N >> M)
{
data_number.push_back(vector<int>());
data_number[indx].push_back(N);
data_number[indx].push_back(M);
indx++;
}
for (vector<int> temp : data_number)
{
updateData(data, temp.at(0));
gteOutData(data, temp.at(1));
cout << endl;
}
for (auto &temp : data_number)
{
temp.clear();
}
data.clear();
return 0;
}
3.备注
>>>>>>
密码微风和煦.
>>>>>>