怎么样在电脑上玩好韩信(啥?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中任意单元格输入以下公式: ="将士总人数为:"&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精选技巧,实用,干货更有趣!