用户:
嗯哼君 渠源查看:2 回复:7 评论:2 创建时间:2018-12-10T21:07:03
本算法为初一数学,会很简单,请放心使用,重在理解
前言:
大家也许听过“爱因斯坦求一百”的故事吧?我给大家原原本本地再复述一下:
爱因斯坦小学的时候老师为了偷懒因此想给大家布置一个很难的题,因此他让大家从一一直加到一百
没想到老师前脚刚出教师的门爱因斯坦就大喊:“5050!”
接着老师与同学都一脸懵:老师也不知道答案对错!
那爱因斯坦是怎么算的呢?我想靠不靠谱的Win自带画图系统给大家演示一遍:
(PS:为了方便起见,嗯哼君就把100改为10了)
我们看到,我们将1~10拆分成了五部分,而每一部分相加结果均为11
因此我们很容易地就得出来:1+2+3+······+9+10=11×5=55
(若是怀疑的话阔以那计算器再算一下欧~~~)
若是1一直加到100的话同理,我们将首尾相加,就得出来101。难在如何去求有多少个101呢?
我们也可以这么理解:我们将他分成了两部分相加,这样我们就得出:100÷2=50(项)
两者结合,我们就得出了:101×50=5050,即1+2+3+···+99+100=5050
正文
通过上面这些前言,我们发现了一个现象:总和=项数×两者相加的和
我们又发现,两者相加的和就是首相加尾项,我们也可以这样证明一下:
(a-2)+(a-1)+a+(a+1),首项加尾项为-1,中间两项也为-1
因此我们又得出,总和=项数×(首项加尾项)
但是别忘了,我们将首项加尾项可是分成两份了呀!因此我们还需要除以二:
总和=项数×(首项加尾项)/2
这就是我们今天要学的求和公式啦,公式如下:
实践
你可能想问,这不都是解决数学问题嘛,管算法什么事?
用处很大啊!比如:若有一个有序数组(数字列表),且每个数直接都差一。
目前你只知道首项与尾项,怎么求和呢?
我们以一个小小的程序来当做糖炒栗子,帮助你更好地实践运用这个公式:
一共才三行,却能帮助你快速求和!
我们先int了回答,接着开始计算:
套公式:项数乘(首项加尾项)除以2=(x*(1+x))/2
PS:由于Python里的运算顺序,因此表示分子的地方也要加括号
最后我们输出结果,虽然是int但由于我们有/,所以结果若为整数则会自动保留一位小数:
到这里,我们就基本理解并学完这个求和公式了。你学会了吗?
拓展
可能有人会感到似曾相识:这不是梯形的面积公式吗!!!
S梯形ABCD=(高(上底加下底))/2
我们不妨来看一下,首项加尾项也就是a+b,项数就是h,除以二就是求面积。
若我们把他看成求平行四边形的面积,则S=h(a+b)
接着由于平行四边形是两个梯形组成的,所以要除以二
这也就从另一个角度:面积法来解释了这个求和公式,而刚才我们用的是移花接木法。
其实我们还可以用很多方法来证明这个求和公式,你想到新的了没?
活动喵恭喜文编院发布编程一小时帖子/作品一篇,工作室积分+2,工作室积分累计截止到12月12日,请在12月12日之前不要删除帖子,否则新增积分失效哦~
再接再厉,活动喵相信你们工作室能成功拿下前六,获得工作室专属荣誉及奖品!
点赞0
评论