
杭电oj 2015 偶数求和
发布日期:2021-05-08 01:30:25
浏览次数:14
分类:精选文章
本文共 1397 字,大约阅读时间需要 4 分钟。
题目:
有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。
Input
输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。Output
对于每组输入数据,输出一个平均值序列,每组输出占一行。Sample Input
3 2 4 2Sample Output
3 6 3 7Author
lcy方法一(比较繁琐,变量过多,过程不够简洁):
思路:先将n个递增的数储存在数组arr[ ]中,再求每m个数的和,再输出平均值。而如果n%m不为零,再另行计算最后不足m个数的平均值。
#includevoid main(){ int n,m,i,k,j,erwai,he; int arr[100]={ 0.0}; while(~scanf("%d %d",&n,&m)) { arr[0]=2; k=0; //用k表示第几个数组元素 erwai=0; for(i=1;i
方法二:
思路:该题不用数组储存数列,而是当an随着循环不断叠加时,求取每个an的和(he),每满m个数便输出平均值并清零he。
#includevoid main(){ int n,m,i,he,an; while(~scanf("%d %d",&n,&m)) { an=0; he=0; for(i=1;i<=n;i++) { an+=2; he=he+an; if(i%m==0) //每满m个数输出一次平均值 { if(i==m) printf("%d",he/m); else printf(" %d",he/m); he=0; //每输出一次平均值 就清零每m项的和 } } if(he!=0) //如果和不为零,意味着需要额外考虑不足m个数的情况 printf(" %d",he/(n%m)); // n%m表示最后剩余几个数 printf("\n"); }}
方法三:
思路:该题借等差数列前n项和公式,求得首项、公差皆为2的数列的Sn=n*(n+1),则可用Sn-Sn-m依次求得每m个数的和,再输出平均值,而不足m个数的,可用Sn-Sn-n%m求得。
#includevoid main(){ int n,m,he=0,i; while(~scanf("%d %d",&n,&m)) { for(i=1;i<=n;i++) { if(i%m==0) { he=i*(i+1)-(i-m)*(i-m+1); //利用等差数列求和公式 if(i==m) printf("%d",he/m); else printf(" %d",he/m); } } if(n%m!=0) //不足m个数的情况 { he=n*(n+1)-(n-n%m)*(n-n%m+1); printf(" %d",he/(n%m)); } printf("\n"); }}
发表评论
最新留言
很好
[***.229.124.182]2025年04月04日 17时20分25秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java面向对象
2019-03-04
JAVA带标签的break和continue
2019-03-04
Java获取线程基本信息的方法
2019-03-04
vue源码分析(MVVM篇)
2019-03-04
设计模式之组合模式
2019-03-04
(Python学习笔记):字典
2019-03-04
(C++11/14/17学习笔记):线程启动、结束,创建线程多法、join,detach
2019-03-04
C++并发与多线程(一)
2019-03-04
java一些基本程序
2019-03-04
vue-依赖-点击复制
2019-03-04
LeetCode 116填充每个节点的下一个右侧结点指针
2019-03-04
2021-4-28【PTA】【L2-1 包装机 (25 分)】
2019-03-04
Arduino mega2560+MPU6050利用加速度值控制舵机
2019-03-04
紫书——蛇形填数
2019-03-04
A Guide to Node.js Logging
2019-03-04
webwxbatchgetcontact一个神奇的接口
2019-03-04
【考研英语-基础-简单句】简单句的核心变化_谓语情态
2019-03-04
Jetson AGX Xavier硬件自启动
2019-03-04
统计字符数
2019-03-04