题目 1159: [偶数求和]
题目描述:
有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数(公差为2的等差数列),现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。
输入:
输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。
输出:
对于每组输入数据,输出一个平均值序列,每组输出占一行
思路:等差数列偶数求和,设定一个数组进行赋值储存。输入一个数来
分割数列求每块的平均值。
注意:每次加和运算后记得清零,该题不是回车控制结果。
应该是可以输入多组数据测试。
#include<stdio.h>
int main()
{
int i,j,k;
int a,b,c;
int ci;
int y;
int sum=0;
int f[10000];
b=2;
while( scanf("%d",&a)!=-1)
{
for(i=0;i<a;i++) //循环输入数据
{
b=2*(i+1);
f[i]=b;
}
scanf("%d",&c);
if(a%c==0) //正好分组的时候
{
ci=a/c;
for(i=0;i<ci;i++)
{
for(k=i*c;k<i*c+c;k++)
{
sum+=f[k];
}
printf("%d ",sum/c);
sum=0;
}
}
else //有剩余的时候
{
ci=a/c;
for(i=0;i<ci;i++)
{
for(k=i*c;k<i*c+c;k++)
{
// printf("%d ",f[k]);
sum+=f[k];
}
printf("%d ",sum/c);
sum=0;
}
ci=a/c;
for(k=(ci-1)*c+c;k<a;k++)
{
sum+=f[k];
}
int z=a-((ci-1)*c+c);
printf("%d ",sum/z);
sum=0;
printf("\n");
}
}
return 0;
}