偶数求和
时间: 1ms 内存:64M
描述:
有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每 m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。
输入:
输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。
输出:
对于每组输入数据,输出一个平均值序列,每组输出占一行。
示例输入:
3 2
4 2
示例输出:
3 6
3 7
提示:
参考答案(内存最优[748]):
#include <stdio.h>
int main()
{
int n,m,s,t;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(s=0;s<n;s+=m)
{
if(t=(s+m-1)<n)
t=s+m-1;
else
t=(n-1);
if(s==0)
{
printf("%d",s+t+2);
}
else
{
printf(" %d",s+t+2);
}
}
printf("\n");
}
return 0;
}
参考答案(时间最优[0]):
#include<stdio.h>
int main()
{
int a[101],b[101],m,n,d,i,j,k,sum;
while(scanf("%d %d",&m,&n)!=EOF)
{
for(i=0;i<m;i++)
a[i]=2*(i+1);
for(i=0,d=0,k=0;i<m;)
{
sum=0;
while(d<n)
{
d++;
sum+=a[i++];
if(i==m)
break;
}
if(d==n)
b[k++]=sum/n;
else
b[k++]=sum/d;
d=i%n;
}
for(j=0;j<k-1;j++)
printf("%d ",b[j]);
printf("%d\n",b[k-1]);
}
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。