【数学-算法】1加到100的有趣算法
今天备考软件设计师,遇到个公式1+2+3+..+n=n(n+1)/2,居然一时卡壳无法证明。
我们先看看令高斯闻名世界的小学数学题,1+2+3+...+98+99+100=?
算法1: 逐个累加。
算法2:逐对的首尾相加: (1+100)+(2+99)+(3+98)+...+(50+51) ,总共有 50对101,就是50*101=5050。
算法3:创造出一个相反的计算式 100+99+98+...+3+2+1,它与1+2+3+...+99+100的结果是相同的,两个式子一一对应相加,总共是100个101,就是100*101,然后再除2,就是100*101/2 = 5050。
这三个算法,显然第三个更直观更清晰。让我感到惊奇的是它的创造性,它没有直接去求解问题,而是创造性的提出一个新问题,然后利用这个多余的新问题与题目之间的独特关系,从而简化了原问题的求解。不得不说,真的不是一般没有受过数学训练的人能想到的。
我们再用算法2和3去推导公式:1+2+3+..+n=n(n+1)/2。
算法2:
n为偶数时,逐对进行首尾相加,刚好有n/2对,每对的和是n+1,二者相乘就是和:(n+1)n/2。
比如:1+2+3+4。
n为奇数时,这时有2种方法。
方法1:先累加前n-1,即先计算:1+2+3+..+n-1,套用偶数的公式,结果前n-1项的和是 n(n-1)/2,然后再加上n,就是 n+n(n-1)/2 = n(n+1)/2。
方法2:逐对进行首尾相加,会有(n-1)/2对,每对的和是n+1,但中间剩下个单项,是 (n+1)/2,两个部分加起来,就是:(n+1)(n-1)/2 + (n+1)/2 = (n+1)n/2。
比如:1+2+3+4+5。
算法3(清晰易懂):
要求1+2+3+...+(n-1)+n
构造n+(n-1)+...+3+2+1
二者上下对应相加,得到:
(n+1)+(n+1)+...+(n+1)+(n+1)+(n+1)
容易看出,是n个n+1相加,即 n*(n+1)
因构造的算式与要求的算式值相等,所以刚才的结果除2,即 n(n+1)/2 为最终结果。
看完算法3是不是感觉眼前一亮,非常清晰。
不得不感慨:数学真的是精妙!
写于湖北省图,2019.10.26
【数学-算法】1加到100的有趣算法相关推荐
- python全排序算法题_Python的100道经典算法题(1)
按照c语言的100道经典算法题,自己原创写的,就得是自己的练习题了 [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十位.个位的数 ...
- HTML如何计算1到100的和,从1加到100等于多少 【求和算法汇总】
从1加到100等于多少 [求和算法汇总] 2018-03-28 22:54:06编辑: zhaozhishi | | 从1加到100,最后得出的和是多少,大致可以写成这样:1+2+3+4+5+6+7+ ...
- JAVA里面一加到一百等于多少_1加到100是多少?详细算法
展开全部 1加到100公式推导过程:1+2+3+4+5+6+7+8+9+10+11+......90+91+92+93+94+95+96+97+98+99+100 =(1+100)+(2+99)+(3 ...
- python基本算法合集(14)——计算从1加到100之和
程序要求计算从1加到100之和. i=a=0 while i<100:i+=1a+=iprint ('从1加到100等于',a)
- 我在网上抢火车票:多加了100元的加速包,却依然买不到票
随着抢票软件市场竞争越来越激烈,有些公司开始利用用户急切的心理做起了误导付费,甚至是空手套白狼的勾当,吃相越来越难看. 2019 年从开始到结束,好像就是一眨眼的事,转眼又到 12 月了! 对于每个外 ...
- linux系统计算从1加到100之和思路风暴
博文前言: 本博文为<老男孩linux就业培训中心-初级班第七期课前考试及课上讲解的课后答案整理, 原题:通过shell编程或命令行方式求1+2+3...+100=?的和来活学活用shel ...
- c语言100块钱买100只鸡算法,JS计算输出100元钱买100只鸡问题的解决方法
JS计算输出100元钱买100只鸡问题的解决方法 本文实例讲述了JS计算输出100元钱买100只鸡问题的方法.分享给大家供大家参考,具体如下: 问题: 公鸡5元一只,母鸡3元一只,小鸡1元买三只,我现 ...
- 20万、50万、100万的算法工程师,有什么区别?
本文作者:北冥乘海生 近几年,算法工程师们的境遇有了很大改观:早些年,信奉糙快猛主义的大佬们觉得他们饱食终日.无所用心,没工作只好在学校混博士,靠数据上的障眼法装神弄鬼.可是,随着去年AlphaGo大 ...
- 一周刷爆LeetCode,算法da神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解 笔记
一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解 笔记 教程与代码地址 P1 出圈了!讲课之外我们来聊聊 ...
- 20 万、50 万、100 万年薪的算法工程师在能力素质模型上有哪些差距?
编辑:Amusi(公号CVer) https://www.zhihu.com/question/59461289 本文仅作为学术分享,如果侵权,会删文处理 20 万.50 万.100 万年薪的算法工程 ...
最新文章
- 重新捡起flask(二)
- mysql length函数_初识LLDB 调试 MySQL-爱可生
- 转换实体类_利用Java反射机制进行Map和JavaBean间转换
- ES6必知必会 (七)—— Generator 函数
- python generator_Python 生成器 generator
- 好评率超高的几个硬核公众号,99%的程序员都关注了!
- 软件开发团队中,凭什么新手当道?| 畅言
- Kubernetes使用Nginx Ingress暴露Dashboard
- Spring Cloud 微服务
- Qt5.12 使用FFmpeg实时解码播放H264/H265摄像头记录(直传数据法)
- npm安装任何包都报错解决方法
- SpringCloud 整合 Dubbo
- 年薪40-80K *14 | 网境科技SLAM算法工程师、算法科学家招聘
- html旅游地图制作,pyecharts 实现画地图 足迹 旅游
- Linux 中Tomcat 服务器 启动项目,页面删除报错“该信息被其他信息引用”解决 (ORA-02292)
- MT4 PC端历史版本更新(老版本MT4下载)
- android手机助手PC,电脑手机助手app
- Python,地理地图可视化:plotly绘制mapbox地图城市中心点经纬度marker标记
- ClickHouse最版本源码编译(X86)
- 荷兰黑客将他孩子的乐高列车放在区块链上