#include<stdio.h> int main() { int n,m; while(~scanf("%d%d",&n,&m)) { int i,j=0,sum=0; int a[n+1],b[n/m+1]; for(i=0;i<n;i++) { a[i]=2*(i+1); //公差为2可看作是公差为1在乘以2 sum+=a[i]; //每m项求和 if((i+1)%m==0) //判断是否已到达m项 { b[j++]=sum/m; //把所求平均数赋给另一个数组 sum=0; //sum初始为0,以便于下一组数求和 } } if(i%m!=0) //判断是否有为满足m项就结束 { b[j]=0; for(int k=i%m-1;i-k<=i;k--) //求余数确定有几个数在m范围内,然后逐个相加 { b[j]+=a[i-k-1]; //在上一个for循环结尾时i加了一个,在此减去,在减去多出m的个数 } b[j++]/=i%m; //对b[j]项求平均数,此处j++是为了与上一个for循环处的j++相对应,以便于下一行for语句确定终止条件 } for(int k=0;k<j;k++) printf("%d ",b[k]); //利用for语句逐个输出平均值 puts(""); //输出完换行 } return 0; }
解题思路:第一步:利用for语句对数组进行赋值,并对数组值求和
第二步:在赋值时进行判断是否以满足m个的条件,若满足则求平均值并赋给新的数组储存起来(记着对下一个求和变量初始化)
第三步:判断第二步是否正常结束,若不是正常结束求出这几个数的平均数并储存
第四步:输出所有储存的平均数值
注意事项:由于我没有看其他人的解题思路,外加本身也是菜鸟一枚,代码可能有很多不够优化或者错误请不要在意,另外第一次分享没有经验,再加上时间仓促,注释和思路交代的可能不够清楚,希望大神路过可以指点指点,没有思路的小伙伴希望可以给你提供一点思路,好了,废话不多说了。看代码吧
0.0分
1 人评分