Problem Description
有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。
Input
输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。
Output
对于每组输入数据,输出一个平均值序列,每组输出占一行。
Sample Input
3 2
4 2
Sample Output
3 6
3 7
第一种方法比较简单,但是要抓住规律,第二种方法我没做出来,哪位大佬帮忙看一看,求助
#include <stdio.h>
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
int c,b,i,t=2;
c=n%m;
b=n/m;
for(i=0;i<b;i++)
{
printf("%d",t+m-1);/*关键点*/
if(i<b-1)
printf(" ");/*控制空格*/
t=t+2*m;
}
if(c!=0)
printf(" %d",t+c-1);
printf("\n");
}
return 0;
}
#include<stdio.h>
int main()
{
int n,m,a[101],i,s,t,k,p,s1;
float b[101];int j;
while(~scanf("%d%d",&n,&m))
{
s=0;t=2;j=0;k=0;s1=0;
for(i=1;i<=n;i++)
{
s+=t;
t+=2;
if(i%m==0)
{b[j++]=s*1.0/m;s=0;k++;}
if(n-k*m<m)
{for(p=1;p<=n-k*m;k++)
s1+=t;
b[j]=s1*1.0/(n-k*m);
}
}
k=j;
for(j=0;j<k-1;j++)
printf("%.f ",b[j]);
printf("%.f\n",b[j]);
}
return 0;
}