原题链接:偶数求和
解题思路:将一段数字按照一定的长度进行分段,我们可以将其分为两部分:
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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复