#2015
题目就是讲2的偶数序列分段求和,主要在格式化输出上比较麻烦,需要控制好空格和换行,这里使用的是分段求和之后计算平均值,之后发现可以直接找出具体某段的数组的中间值,不需要求和取平均,但是这个也是数组的特殊性,因此还是按照求和取平均来算。
题目直达:http://acm.hdu.edu.cn/showproblem.php?pid=2015
发现WA了好几次,还是初始化没有做好,在每次进入测试数据时,都需要将value值初始化。
AC代码:
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
int main() {
int n,m,sum;
int number[1010];
while(cin>>n>>m) {
int value=0;
for(int i=0; i<n; i++) {
number[i]=2*(i+1);
}
int t=n/m;
int l=n%m;
if(l==0) {
for(int i=0; i<t; i++) {
sum=0;
for(int j=i*m; j<(i+1)*m; j++) {
sum+=number[j];
}
if(i==t-1) {
cout<<sum/m<<endl;
} else {
cout<<sum/m<<" ";
}
}
}
else {
for(int i=0; i<t; i++) {
sum=0;
for(int j=i*m; j<(i+1)*m; j++) {
sum+=number[j];
}
cout<<sum/m<<" ";
}
for(int k=t*m;k<n;k++){
value+=number[k];
}
cout<<value/l<<endl;
}
}
return 0;
}