#include<stdio.h>
main()
{ int n,m,i,j,t,sum,a[110];
for(i=2;i<=100;i++)
{ a[0]=0;
a[1]=2;
a[i]=a[i-1]+2;//将题中的数列 赋值给数组a
}
while(scanf("%d%d",&n,&m)!=EOF)
{ if(n%m==0)//第一种情况;
{
for(j=1;j<=n;j++)
{
sum+=a[j];
if(j%m==0) //遇到m就输出;
{
printf("%d",sum/m); sum=0;
if(j!=n) printf(" ");
else printf("\n");
}
}
}
else //第二种情况;
{
t=n%m;
for(j=1;j<=n;j++)
{
sum+=a[j];
if(j%m==0)
{ printf("%d ",sum/m); sum=0;}
if(j==n)
{ printf("%d",sum/t);
sum=0;
if(j!=n) printf(" ");
else printf("\n");
}
}
}
}
return 0;
}
另解(比较简单)----
#include "stdio.h"
main()
{ int n,m,sum,x,num,i;
while(~scanf("%d%d",&n,&m))
{
num=0;sum=0;x=2;
for(i=n;i>0;i--)
{
sum+=x;num++;
if(i==1) printf("%d\n",sum/num);
else if(num==m)
{
printf("%d ",sum/num);
sum=0;num=0;
}
x+=2;
}
}
return 0;
}
PS:次数是按n减少来算,sum从2一直加,遇到m 就输出sum/m,然后清零。x的起始值一直在变,最后剩下的除以最后的num。优点在于不用分情况,num每次清零计算很方便。