解题思路:将一段数字按照一定的长度进行分段,我们可以将其分为两部分:

1》出去最后一组之外的其他组,可以按照正常的求每组第一个数r,同时使用等差数列求和公式求总和,并除以每一组的长度m。

2》最后一组中,同样先求出数组首元素r,此时的数组长度为y,再进行就平均数sum。

注意事项:

参考代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int fun(int n,int m)
{
    int s,y,r,sum,i;      //s是拥有m个元素的段的个数,y最后一组数组的长度
    s=n/m;y=n%m;
    for(i=1;i<=s;i++)
    {
        r=2*((i-1)*m+1);   //r每段数组的首元素
        sum=(m*(r+r+(m-1)*2))/(2*m);   //sum每段元素的平均值
        printf("%d ",sum);
    }
    if(y!=0)
    {
        r=2*(s*m+1);
        sum=(y*(r+r+(y-1)*2))/(2*y);
        printf("%d ",sum);
    }
}
int main()
{
    int m,n;       //n长度 m每段长度
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        fun(n,m);
        printf("\n");
    }
    return 0;
}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论