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#include<stdio.h> int main(){ int n,m; int t,k; int a[110],sum; int re,i,j; sum=0; for(i=1;i<=110;i++) { sum+=2; a[i]=sum; } while(scanf("%d%d",&n,&m)!=EOF) { t=n/m; if(t==0){ re=0; for( i=1;i<=n;i++) re+=a[i]; printf("%d\n",re/n); } else { re=0; k=n%m; if(k!=0){ re=0; // for( i=1;i<=t;i++){ //for(j=i;j<=i*m;j++) 此处在第二伦循环时j=2,并不是下一组的开头 // re+=a[j]; for( i=0;i<t;i++){ for(j=i*m+1;j<=(i+1)*m;j++) re+=a[j]; printf("%d ",re/m); re=0; } re=0; for( i=t*m+1;i<=n;i++) re+=a[i]; printf("%d\n",re/k); re= 0; } else{ re=0; //for( i=0;i<t-1;i++) //for(j=i*m+1;j<=(i+1)*m;j++) 此处在第二伦循环时j=2,并不是下一组的开头 for( i=0;i<t-1;i++){ for(j=i*m+1;j<=(i+1)*m;j++) re+=a[j]; printf("%d ",re/m); re=0; } re=0; for(i=(t-1)*m+1;i<=t*m;i++) re+=a[i]; printf("%d\n",re/m); re=0; } } } return 0; } /* sum=0; t=n/m; if(t==0){ for(int i=1;i<=n;i++) { sum+=2; } printf("%d\n",sum/n); } else{ k=n%m; for(int i=1;i<=t;i++){ for(int j=1;j<=m;j++){ sum+=2*i; } printf("%d ",sum/m); } for(int i=1;i<=k;i++) sum+=2; printf("%d\n",sum/k); } } return 0; }*/