杭电oj 偶数求和
Problem Description
有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。
Input
输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。
Output
对于每组输入数据,输出一个平均值序列,每组输出占一行。
Sample Input
3 2
4 2
Sample Output
3 6
3 7
我的方法是:先定义一个数组,把偶数序列放进去。然后通过循环进行判断,
当 j==m&&i!=n 就说明sum加到了m个中的最后一个,然后把标志j复位,sum清0,t的作用是用来计算前面有多少个m组,后面如果不够一个组,可以用
(n-t*m)来表示最后一组的组数。
注意在完成一次输出之后,必须要把sum,t,j清0,否则会影响下一次的计算。
#include <stdio.h> #include <stdlib.h> int main() { int a[101],i,n,j=0,m,t=0; int sum=0; for(i=1;i<101;i++) a[i]=2*i; while(scanf("%d",&n)!=EOF) { scanf("%d",&m); for(i=1;i<=n;i++) { sum = sum+a[i]; j++; if(j==m&&i!=n) { printf("%d ",sum/m);sum=0;t++;j=0; } if(i==n) { printf("%d\n",sum/(n-t*m)); } } sum=0; j=0; t=0; } return 0; }