题目描述 有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数(公差为2的等差数列),现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。
输入 输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。
输出 对于每组输入数据,输出一个平均值序列,每组输出占一行
思路:我们可以先用一个数组存下从1 ~ 100 的所有的等差数列。然后我们一个循环,每次是m的次数倍时我们将其输出求平均并且将sum数组归零。然后看是否满足n%m==0,满足则说明正好能取整数个,否则最后一个特殊处理即可。
#include<bits/stdc++.h>
using namespace std;
int a[100];
void init(){
a[1] = 2;
for(int i=2;i<=100;i++){
a[i] = a[i-1] + 2;
}
}
int main(){
int n,m;
init();
while(cin>>n>>m){
int sum = 0;
for(int i=1;i<=n;i++){
sum += a[i];
if(i%m==0){
cout<<sum/m<<" ";
sum = 0;
}
}
if(n%m!=0) cout<<sum/(n%m);
cout<<endl;
}
return 0;
}