回覆列表
  • 1 # 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年,被西方稱為“中國剩餘定理”。秦九韶不僅為中國贏得無上榮譽,也為世界數學作出了傑出貢獻。若您有興趣,可作進一步瞭解!

  • 中秋節和大豐收的關聯?
  • LOL冷門天賦讓卡莎再次封神,ADC迎來洗牌,Doinb卻發明1個黑科技,如何點評?