测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A41036. 偶数求和

填空题 困难

题目描述

偶数求和

题目描述

有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数(公差为2的等差数列),现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。

输入格式

输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。

输出格式

对于每组输入数据,输出一个平均值序列,每组输出占一行

样例输入

3 2

4 2

样例输出

3 6

3 7

参考答案

#include <stdio.h> int function( int n, int m ); int main() { int n, m; while ( (scanf( "%d%d", &n, &m ) ) != EOF )//以文件末尾结束 function( n, m ); return(0); } /*------------------------------------------------*/ int function( int n, int m ) { int n1 = 0, sum = 0; //定义n1表示加到第几个数(起始为0表示没开始加),sum表示和 int a = 0; //数列的第一个元素,以0开始,这样下面程序好写 while ( n1 < n ) { if ( (n - n1) >= m ) //看剩余的数列长度是否大于m { sum = 0; //把和置0 for ( int i = 0; i < m; i++ ) //求m个数的和 { a += 2; //依次加2,变为数列中的每一个数 sum += a; //求和 n1++; //记录加到第几个数 } printf( "%d ", sum / m ); //输出平均值 }else { //剩余数列长度不大于m,按实际长度求 sum = 0; int t = n - n1; //t表示剩余数列的长度 for ( int j = 0; j < t; j++ ) //循环求和 { a += 2; sum += a; n1++; //记录加到第几个数 } printf( "%d \n", sum / t ); //输出平均值,带换行 } } }
上一题 下一题