解题思路:题目对数列的定义是长度为n,公差为2的一个等差数列,那么可以这样理解数列中的每个元素值都是k=2*i(i=1,2,3.....n),这样每次求和只需要变量sum加上2*i即可。当i等于m的倍数时即i对m取余的余数为0,这时候计算平均值sum/m,然后将sum置0进行下一轮计算。到最后一组数据时如果i==n且i对m取余余数还是不为0,那么跳出循环后sum的值不为0,再加判断令sum除以n对m的余数。
参考代码:
#include<stdio.h>
int main()
{
int n,m;
while(scanf("%d %d",&n,&m)!=EOF){
int i,sum = 0;
for(i = 1;i<=n;i++)
{
sum+=2*i;
if(i%m==0){
printf("%d ",sum/m);
sum=0;
}
}
if(sum!=0){
int cont = 0;
if(n%m==0){
cont = m;
}else{
cont = n%m;
}
printf("%d ",sum/cont);
sum = 0;
}
}
return 0;
}
0.0分
0 人评分
K-进制数 (C语言描述,蓝桥杯)浏览:955 |
A+B for Input-Output Practice (VII) (C语言代码)浏览:566 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:594 |
罗列完美数 (C语言代码)浏览:519 |
剪刀石头布 (C++代码)浏览:1811 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:571 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:725 |
矩阵转置 (C语言代码)浏览:855 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:852 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:683 |