偶数求和
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 58769 Accepted Submission(s): 25679
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 题目解析: n<m时 按实际数量求平均值 n>m时 1.n%m==0时 n个数恰好被分成n/m组数据,每组有m个数 2.n%m!=0时,分成n/m+1组数,n/m组每组有m个数,剩下的一组不够m个数 按实际数量求平均值 这道题另外需要注意的地方就是 输出时 数与数之间有一个空格。两种实现输出的方法: 例:若要输出n个数, 1.数的前面有空格,即把空格和它后面的数看成一个整体printf("%d",m);//数的序号是0--(n-1),先输出第一个数 for(i=1;i<n;i++) printf(" %d",m); printf("\n");2.把空格和它前面的数看成一个整体
for(i=1;i<n;i++)//数的序号是1--n,先输出前n-1个数 printf("%d ",m); printf("%d\n",m);//然后输出最后一个数AC代码:
#include<stdio.h> int main() { int n,m,i,j,sum,ans; while(~scanf("%d%d",&n,&m)) { int temp=2; while(n>=m)//n>m时 若n%m==0恰将数据分成n/m组 否则分成n/m+1组 { for(i=0;i<n/m;i++)//按m个数输出平均值的次数 { sum=0;//每次都要归0 for(j=0;j<m;j++) { sum+=temp; temp+=2; } ans=sum/m; n-=m;//剩下的 待处理的数 的个数n if(n!=0) printf("%d ",ans); else printf("%d\n",ans); } } while(n!=0) { sum=ans=0; for(i=0;i<n;i++) { sum+=temp; temp+=2; } ans=sum/n; printf("%d",ans); printf("\n"); break; //否则形成死循环 超时 } } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-09 06:08:48