<p class="ql-block">EXCEL是在电脑上做表格文件的工具。我们可以利用EXCEL附带的计算功能,解决中小学奥数中常见的一些计算难题,比如一题有多解,需要大量计算的题,同类题的通解,等等。EXCEL计算要用到函数,你只需要会加减乘除,再要用哪项计算,可以用百度搜索对应的函数和用法,现学现卖就够用,不需要熟知EXCEL所有的计算功能。</p><p class="ql-block">先看下面这道题:</p><p class="ql-block">有30个人,其中有男人、女人和小孩,他们在一家小饭馆里共花了50先令;每个男人花3先令,每个女人2先令,每个小孩1先令;问男人、女人和小孩各有多少?(《马克思数学手稿》)</p><p class="ql-block">这道题看起来不难,但符合条件的解太多,计算起来很麻烦。用EXCEL来解,很简单。</p><p class="ql-block">设男人、女人、小孩数分别为x、y、z,列方程:</p><p class="ql-block">x+y+z=30</p><p class="ql-block">3x+2y+z=50</p><p class="ql-block">消元得到:</p><p class="ql-block">2x+y=20</p><p class="ql-block">接下来,在下面的EXCEL工作表中,我们在“x+y+z”下的A3单元格填入“30”,在“x的系数”下的B3单元格填入“2”,在“y的系数”下的C3单元格填入“1”,在“等式右边”下的D3单元格填入“20”。</p> <p class="ql-block">自动计算的结果即时显现:一共得到11组自然数解。</p><p class="ql-block">这是如何实现的呢?</p><p class="ql-block">我们从表中第6行第2列“x”之下的B6单元格起依次向下填入数字“0”、“1”、“2”、“3”、“4”……;</p><p class="ql-block">在第3列“y”之下的C6单元格输入“=(d3-b6*b3)/c3”;</p><p class="ql-block">在第4列“z”之下的D6单元格输入“=IF(c6=INT(c6),a3-b6-c6,“非正整数解””,换成普通话就是:“如果c6格中的数是整数,则d6格的数等于a3格中的30减去b6中的数再减去c6中的数;若不是整数,则在d6格中输入“非整数解””。</p><p class="ql-block">实际效果就是,当x=1时,y=(20-2×1)÷1=18;z=30-1-18=11;</p><p class="ql-block">x=2时,……</p><p class="ql-block">上面输入的函数式中使用了四则运算符号--“+”、“-”、“*”、“/”和“=”,逻辑函数“IF”,还有整数函数“INT”。</p><p class="ql-block">输入第一行的函数后,下面各行函数可以通过向下填充得到,函数式中的“b6”依次自动换成“b7”、“b8”、“b9”、……。</p><p class="ql-block">现在我们有了一个解题模板,可以用来自动解同类型题。</p><p class="ql-block">如古代《算经》中的“百鸡问题”:</p><p class="ql-block">鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一.百钱买百鸡.问鸡翁母雏各几何?(译:每一只公鸡价值是5个钱,每一只母鸡价值是3个钱,每三只小鸡价值是1个钱,现有100个钱想买100只鸡。问公鸡,母鸡和小鸡各应买几只?)</p><p class="ql-block">设公鸡、母鸡、小鸡数分别为x、y、z,列方程:</p><p class="ql-block">x+y+z=100</p><p class="ql-block">5x+3y+1/3z=100</p><p class="ql-block">消元得到:</p><p class="ql-block">7x+4y=100</p><p class="ql-block">我们将模板中需要填入已知条件的四个单元格中的数字分别改为“100”、“7”、“4”、“100”,答案秒出,得到自然数解共4组,见下面的工作表:</p> <p class="ql-block">接着用EXCEL解题,换一种类型。</p><p class="ql-block">迎春杯小学数学竞赛题:</p><p class="ql-block">在图中七个小圆圈中各填入一个自然数,同时满足以下要求:</p><p class="ql-block">(1)使所填的七个自然数的和是1997;</p><p class="ql-block">(2)使图中给的每个数都是相邻两个○中所填数的差。</p> <p class="ql-block"> ○</p><p class="ql-block"> 7 1</p><p class="ql-block"> ○ ○</p><p class="ql-block"> 6 2</p><p class="ql-block"> ○ ○</p><p class="ql-block"> 5 3</p><p class="ql-block"> ○ 4 ○</p><p class="ql-block"> </p> <p class="ql-block">设最上面圆圈内的数为x,其它六个数大于或小于x的那部分数值之和为y,列出等式:</p><p class="ql-block">7x+y=1997</p><p class="ql-block">上式中,求出y值即可得出x值。</p><p class="ql-block">y值是x之外的六个数各自与x的差的总和,因此首先要确定这六个数各自与x的差。七个数中,第一个是x,它和第七个数相差7,即第七个数与第一个数的差是±7。于是有下面这个等式,需要在等式左边的每个数字之间加入加减号,使等式成立。</p><p class="ql-block">1 2 3 4 5 6=±7</p><p class="ql-block">一共有八种加减号的添加方式,形成八种相邻差的组合,相邻差还要转换成对x的增减值,其和即y值。如此,得到七个不同的y值:</p><p class="ql-block">组合1:1+2-3-4+5+6=7</p><p class="ql-block">转换成y值:1+3+0-4+1+7=8</p><p class="ql-block">组合2:1-2+3+4-5+6=7</p><p class="ql-block">转换成y值:1-1+2+6+1+7=16</p><p class="ql-block">组合3:1-2-3-4-5+6=7</p><p class="ql-block">转换成y值:1-1-4-8-13-7=-32</p><p class="ql-block">组合4:-1+2+3+4+5-6=7</p><p class="ql-block">转换成y值:-1+1+4+8+13+7=32</p><p class="ql-block">组合5:-1+2-3-4+5-6=7</p><p class="ql-block">转换成y值:-1+1-2-6-1-7=-16</p><p class="ql-block">组合6:-1-2+3+4-5-6=7</p><p class="ql-block">转换成y值:-1-3+0+4-1-7=-8</p><p class="ql-block">组合7:-1-2+3-4+5+6=7</p><p class="ql-block">转换成y值:-1-3+0-4+1+7=0</p><p class="ql-block">组合8:1+2-3+4-5-6=7</p><p class="ql-block">转换成y值:1+3+0+4-1-7=0</p><p class="ql-block">本题给出的总数是1997,我们从上面的组合中找到符合题意的y=16(1997-16能被7整除)。由y=16,计算出x=283。其它六数的值可通过组合二中各数对x的增减值(1-1+2+6+1+7)</p><p class="ql-block">计算出来。</p><p class="ql-block">整个做题过程很繁琐:先要找到所有的加减符号添加方式,一一转换成y值,并从所有y值中挑选出满足题意的y值,再由y值计算出x值,最后通过符合条件的添加方式计算出其它六个数的值。</p><p class="ql-block">下次再遇到这种题时,比如把总数改为8995,其它条件不变。解题的时候,你不可能记住上面所有的加减符号添加方式和y值,你仍然要重复上面的步骤,花费一样多的时间。</p><p class="ql-block">下面,我们利用总数除以7的余数、相邻差的加减与y值之间的相互关系,用EXCEL建立一个计算模板。输入总数,秒出答案。</p><p class="ql-block">实际计算见下表:</p> <p class="ql-block">我们在”总数”下的B5单元格中输入数字8995,MOD函数在”余数”下的C5单元格中计算出该数除以7余数为0,用IFS函数确定余数0对应的y值(D5单元格)也为0,并在”x”下的E5单元格中用算术函数自动算出x的值1285。</p><p class="ql-block">注:D5单元格中输入的函数公式:</p><p class="ql-block">=IFS(C5=1,8,C5=2,16,C5=3,-32,C5=4,32,C5=5,-16,C5=6,-8,C5=0,0),意思是,如果表示余数的C5单元格中的数字为0-6之一时,则本单元格D5中填入该余数所对应的y值,例如,余数是1,则y值是8。</p><p class="ql-block">在接下来的第8-15行的列表中,0-6的七个余数对应着八种加减关系,即八种计算模式。EXCEL的IF函数从中找到余数为0的两种计算模式,并在所在行的B列单元格中自动填入x的值,在C-H列的单元格中根据对应的计算模式计算出后六个数,如此得到七个数的两组解。</p><p class="ql-block">注:B列中从上至下8个单元格,以第7个单元格为例,该单元格内输入的函数公式是:=IF(C5=A12,E5),意思是,如果C5单元格的数值等于A12单元格的数值,则本单元格(B12)的数值等于E5单元格x的数值。</p><p class="ql-block">换一个数,比如总数改为998877,答案亦秒出,见下表:</p> <p class="ql-block">(注:为避免七个得数中出现负数,随机输入的数字应大于66。)</p><p class="ql-block">继续用EXCEL解题。</p><p class="ql-block">韩信点兵是中小学数学竞赛中常见的一类题,例如,一队士兵,三个三个一排多两个,五个五个一排多三个,七个七个一排多两个,问至少有多少士兵?</p><p class="ql-block">这类题属于同余问题,通解用公式法。上题中,几个几个一排就是除以几,几个是除数(数学术语称之为“模数”),多几是余数。</p><p class="ql-block">选一道古书中除数(模)多的题:二数余一,五数余二,七数余三,九数余五,问本数。(杨辉:《续古摘奇算法》)</p><p class="ql-block">上题中,“二数”是“两个两个一数”的意思。“数”之前的数字二、五、七、九分别是模1(m1)、模2(m2)、模3(m3)、模4(m4)的值,“余”之后的数字一、二、三、五分别是余数1(b1)、余数2(b2)、余数3(b3)、余数4(b4)的值。由于是用EXCEL解题,要适用所有情形,无法使用奥数中的各种灵活解法,而是采用公式法。</p><p class="ql-block">设本数为x,通解公式是:</p><p class="ql-block">x=模2×模3×模4×乘率1×余数1+模1×模3×模4×乘率2×余数2+模1×模2×模4×乘率3×余数3+模1×模2×模3×乘率4×余数4。</p><p class="ql-block">公式看上去很复杂,实际上是由四个相似的乘式相加组成,每一个乘式都是由四个模数中的三个模数相乘,再与乘率以及余数相乘。</p><p class="ql-block">乘率不是已知条件,需要计算出来。当四个模数中的三个模数相乘的积除以另一个模数,余数不是1时,需要再乘以一个数,使它们的积再除时余数为1,再乘的这个数就是乘率。以乘率4为例:模1、模2、模3相乘等于70,70除以9(模4),余数为7,不是1。7再乘4等于28,28除以9余1,倒推出乘率4的值是4。乘率1、乘率2、乘率3的确定以此类推。</p><p class="ql-block">公式中不同的三个模数相乘的乘积,分别用M1、M2、M3、M4表示,M是四个模数的乘积。乘率1至4,分别用M'1、M'2、M'3、M'4表示。</p><p class="ql-block">计算过程见下面的工作表:</p> <p class="ql-block">本题已知条件共有八个数字,模数2、5、7、9,余数1、2、3、5,分别填入上表中第3行的八个单元格中。第7行中是自动计算出的M、M1、M2、M3、M4的值。</p><p class="ql-block">表中第23行以下,第一列A列(试数)从1往下依次加1;</p><p class="ql-block">第二列B列,计算出试数乘以M1再除以m1的余数,此处(B23单元格)输入:=MOD(A23*A10,A4);</p><p class="ql-block">第三列C列,当第二列的得数为1时,同一行第一列的试数就是乘率1(M'1),此处(C23单元格)输入:=FILTER(A23:A43,B23:B43=1),意思是说,B23到B43范围中的数等于1,则此单元格内的数等于A23到A43范围中相对应的数,即乘率1。</p><p class="ql-block">用同样的方法在第五列E列得到乘率2,第七列G列得到乘率3,第九列I列得到乘率4。</p><p class="ql-block">乘率1至4的值,我们只取第一行的数,自动填入第13行的四个单元格中。在F16单元格中按照通解公式用算术函数计算出x的一个值;在G16中用MOD函数计算出x的最小值。第19行显示x的所有解,即437、437+630、437+630×2、437+630×3 ………。</p><p class="ql-block">再用EXCEL计算下面这道有五个除数(模数)的余数题。</p><p class="ql-block">今有数不知总,以5累减之剩3,以715累减之剩538,以247累减之剩174,以391累减之剩109,以187累减之也剩109,问总数若干。(黄宗宪:《求一术通解》)</p><p class="ql-block">解同余式组,要求模数两两互质,即任意两个模数中均不得含有除了1之外的共同因数。上题不符合两两互质的要求,需要转化为两两互质并与原式有相同解的形式。</p><p class="ql-block">上题原式:</p><p class="ql-block">X≡3 (mod 5)</p><p class="ql-block">X≡538 (mod 5×11×13)</p><p class="ql-block">X≡174 (mod 13×19)</p><p class="ql-block">X=109 (mod 17×23)</p><p class="ql-block">X≡109 (mod 11×17)</p><p class="ql-block">转换为两两互质的形式:</p><p class="ql-block">X≡3 (mod 5)</p><p class="ql-block">X≡109 (mod 11×13)</p><p class="ql-block">X≡3 (mod 19)</p><p class="ql-block">X≡17 (mod 23)</p><p class="ql-block">X≡7 (mod 17)</p><p class="ql-block">”≡”是同余符号。“X≡3 (mod 5)”表示X与3同除以5有相同的余数3。</p><p class="ql-block">转换后新的同余式组,用现代文字描述为:自然数x,除以5余1,除以143余109,除以19余3,除以23余17,除以17余7,求x。</p><p class="ql-block">自动计算结果见下表:</p> <p class="ql-block">上表第4行逐一输入模1-模5和余数1-余数5的值。</p><p class="ql-block">其中乘率2的计算,计算量较大。用M2除以m2,即37145除以143,得到余数108。用108乘以一个数,使乘积除以143余1,经过从1试算到49才得到M'2的值。由于是自动计算,计算步骤再多也感觉不出来。</p><p class="ql-block">上面的EXCEL模板,解锁了这一类同余式方程组的所有题解。需要注意的是,此类题要求模数(除数)两两互质,满足这个条件才能用上面的模板自动计算。</p><p class="ql-block">为什么要用EXCEL做题?</p><p class="ql-block">计算器是计算工具,普及了计算器之后,笔算和珠算就淡出了。而EXCEL就像一个超级计算器,用了它,计算器就多余了。经常有考试禁止带计算器入场,小学应用题不让用方程解题的规定,这些限制毫无意义。数学是用来解决问题的,解决问题不应当限制工具的使用。</p>