台式电脑

怎么样在电脑上玩好韩信(啥?EXCEL还能领兵作战?3分钟让你学会点兵,无惧敌军)

相信每个男人都有过“金戈铁马,气吞万里如虎”的想象假如有一天,你穿越到楚汉相争时期成为韩信......

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

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

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

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

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

我们先把问题翻译成数学语言:已知一个正整数X,1000

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

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

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

Oh,MyGod,我佛真主耶稣保佑,这得算到何年何月!可这正是电脑擅长的呀,来看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还能领兵作战?3分钟让你学会点兵,无惧敌军!

解法二

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

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

啥?EXCEL还能领兵作战?3分钟让你学会点兵,无惧敌军!

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

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

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

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

本文涉及的函数主要有:

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

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

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

怎么样在电脑上玩好韩信(啥?EXCEL还能领兵作战?3分钟让你学会点兵,无惧敌军)

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

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

问题延伸

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

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

欢迎留言探讨

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

啥?EXCEL还能领兵作战?3分钟让你学会点兵,无惧敌军!

相关新闻

返回顶部