一道小學五年級的數學題引發的一些思考

2021-04-08 22:16:37 字數 1117 閱讀 9748

表弟暑假在我家做作業,問我一道題::學學習

學習進+

學習進步

————————

2 0 0 1

四個字各代表乙個0-9的數字,問「學習進步」代表多少。

我很驚訝在小學作業中就出現這種題,這道題即使在現在的大學演算法課上也會作為一道智力題來考大家,很多人都答不上來~因為這道題需要很強的邏輯思維能力。

這道題的答案是1802。可能細想一下就能做出來,不過作為搞計算機的人,用計算機的方法做出來也不失為一種挑戰。

首先想到的就是窮舉法。我們都知道加法的交換律,通過交換,原來的加法就成為:步進進

習習習+

學學學學

————————

2 0 0 1

那麼設學=a,習=b,進=c,步=d。

#include

int main()

}return 0;

}通過計算機挨個排查,最終得出結果。這種方法要進行1803次迴圈(從0000迴圈到1802),如果把for (b = 0; b < 10; b++)換為for (b = 9; b>=0 ; b--)則需要1103次迴圈。

用這種方法做出來後總覺得不過癮,實在是太笨的方法了。是否還有更有意思更有效的方法呢?

我們繼續使用交換律

當學+1,結果即加上1111,

當習+1,結果即加上111,

當進+1,結果即加上11,

噹步+1,結果即加上1,

當學比標準值小1即結果小1111,

即使把習加上9也只有999!

無濟於事!

故只由當(學+1)*1111剛好大於2001而 學*1111小於2001時學的值最恰當!

學即2001除以1111的取整!

同理習即(2001-1111)除以111的取整。

依此類推!其他可以很輕鬆的口算出來。

#include

int main()

system("pause");

return 0;

}在計算機上實現演算法僅需4次迴圈,而窮舉則至少要進行1103次迴圈。

當然問題的解決辦法肯定不止這些,如果有新的方法,還請大家提出來。再次還要感謝論壇上的

wenzituo()

( ) 和其他許多壇友的支援。

Python 小學4年級的數學題

跟同事聊天的時候得知以下兩道小學四年級數學題,我無 說,確定這是4年級數學題?確定?小學4年級的數學題 1.有一串數 19962808864 這串數的排列規律是 從第 7個數起,每個數都是它前面兩 個數之和的個位數。那麼這串數中第 1999 個數字是 這 1999 個數字的和是 2.有一種細胞,每分...

一道數學題引發的世界動盪

今天在網上看到乙個這樣的試題,與大家 一下 0.99999 等於1嗎?0.99999無限迴圈和1究竟哪個大?0.9999.與1比大小 挺白痴的問題,卻引起n多人的關注與激烈討論。首先您是認為哪個答案呢?a.0.9999.1 b.0.9999.1 c.0.9999.1 d.我想絕大多數都會認為是答案a...

一道怪怪的數學題

如圖1 其中一種初態 乙個4 4的棋盤,上面有1 15共15個數字和乙個空格 用 表示 要求利用空格移動棋子把他們排成圖2的形式 目標狀態 10 1 11 14 1 2 3 4 2 3 5 5 6 7 8 8 9 4 15 9 10 11 12 12 13 6 7 13 14 15 圖1 圖2 問題...