当前位置: 代码迷 >> 综合 >> 题目 1159: [偶数求和]
  详细解决方案

题目 1159: [偶数求和]

热度:32   发布时间:2024-02-13 09:31:08.0

题目描述
有一个长度为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;
}