本文总共1717个字,阅读需6分钟,全文加载时间:2.286s,本站办公入门专栏收录该内容! 字体大小:

文章导读: 目录内容 隐藏 1 相信每个男人都有过“金戈铁马,气吞万里如虎”的想象 ……各位看官请向下阅读:

相信每个男人都有过“金戈铁马,气吞万里如虎”的想象

假如有一天,你穿越到楚汉相争时期成为韩信......

话说秦朝末年,楚汉相争。有一次,韩信带领1500名将士与楚王大将李锋交战。苦战一场,楚军不敌,败退回营,汉军也死伤四五百人,于是,韩信整顿兵马也返回大本营。

当行至一山坡,忽有后军来报,说有楚军骑兵追来。只见远方尘土飞扬,杀声震天。汉军本来已十分疲惫,这时队伍大哗。韩信兵马到坡顶,见来敌不足五百骑,便急速点兵迎敌。

他命令士兵3人一排,结果多出2名;接着命令士兵5人一排,结果多出3名;他又命令士兵7人一排,结果又多出2名。

韩信马上向将士们宣布:我军有1073名勇士,敌人不足五百,我们居高临下,以众击寡,一定能打败敌人。汉军本来就信服自己的统帅,这一来更认为韩信是“神仙下凡”、“神机妙算”。于是士气大振。一时间旌旗摇动,鼓声喧天,汉军步步进逼,楚军乱作一团。交战不久,楚军大败而逃。

那么问题来了,韩信是如何知道将士的人数的呢?假如有一天,你穿越到古代成为韩信,身边只有一台装有EXCEL的电脑,你能够带领将士杀出重围吗?

我们先把问题翻译成数学语言:已知一个正整数X,1000<X<1100;X=3*m 2,X=n*5 3,X=p*7 2,其中(m、n、p)均为正整数,求X为多少?

咋一看,用EXCEL似乎办不到呀,我们先用一个笨方法来解决,穷举!从1000验算到1100,不就100个数嘛!

1000=3*333 1,一看就不对,下一个

1001=3*333 2,诶,对了,继续,1001=5*200 1,不对......

Oh,My God,我佛真主耶稣保佑,这得算到何年何月!可这正是电脑擅长的呀,来看EXCEL是怎么算的:

解法一

我们现在A列列出1000至1100的数字,然后分别在B,C,D列对3、5、7取余数,如果余数分别等于2,3,2就恰好得到了我们的将士人数,

公式为:=MOD($A2,B$1)

验证公式为:=IF((B2=2)*(C2=3)*(D2=2),"将士总人数为:"&A2,"不符要求")

这样就求出了我们的将士总人数,借用EXCEL,你也可以带兵打仗啦!

解法二

有些同学可能会说,这样求解表格太大了,不够优雅,我们来个优雅的!在EXCEL中任意单元格输入以下公式:

="将士总人数为:"&SUMPRODUCT(ROW(1000:1100),(MOD(ROW(1000:1100),3)=2)*(MOD(ROW(1000:1100),5)=3)*(MOD(ROW(1000:1100),7)=2))

是不是超级神奇?这个函数的思路和上面的思路是一致的,都是枚举法的运用,其计算过程可分为以下几步:

第一步:ROW(1000:1100):生成1000~1100的数组

第二步:用MOD函数分别对其取余

第三步:当余数同时满足除3余2,除5余3,除7余2时,即得到将士人数

本文涉及的函数主要有:

MOD,求余函数,语法:MOD(被除数,除数)

IF,条件函数,语法:IF(逻辑条件,事件A,[事件B]),当逻辑条件为真时,返回事件A,反之,返回事件B

SUMPRODUCT,数组相乘再求和,语法:SUMPRODUCT(数组1,[数组2]......)

ROW,返回单元格的行号,语法:ROW(单元格引用

本文涉及的函数都是基础函数,结合起来却有妙用,函数是基础,算法思维才是根本,理解背后的逻辑,解题易如反掌!

问题延伸

“韩信点兵”问题又被称为“中国剩余定理”、“大衍求一术”、“鬼谷算”等,和《九章算术》中的“物不知数”问题为同类问题,属于现代数论中求解一次同余式方程组问题,

秦九韶所发明的“大衍求一术”,即现代数论中一次同余式组解法,是中世纪世界数学的最高成就,比西方1801年著名数学家高斯(Gauss,1777—1855年)建立的同余理论早554年,被西方称为“中国剩余定理”。秦九韶不仅为中国赢得无上荣誉,也为世界数学作出了杰出贡献。若您有兴趣,可作进一步了解!

欢迎留言探讨

我是 EXCEL精选技巧,每天带您学习一个EXCEL精选技巧,实用,干货更有趣!

想要从零系统学习Excel,查看本站上方“视频教程”获取最新秋叶Office三合一办公应用课程!

以上内容由优质教程资源合作伙伴 “鲸鱼办公” 整理编辑,如果对您有帮助欢迎转发分享!

你可能对这些文章感兴趣:

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注