Python 學習筆記——求餘數操作符 % 在數學計算中的應用-try_006_02

今天做完這個習題後發現,原來學好編程可以用來解決一些數學上刁鑽的難題,例如下題:

愛因斯坦的難題——
愛因斯坦曾出過這樣一道有趣的數學題:有一個長階梯,若每步上2階,最後剩1階;若每步上3階,最後剩2階;若每步上5階,最後剩4階;若每步上6階,最後剩5階;只有每步上7階,最後剛好一階也不剩。
(愛因斯坦的腿肯定很長,竟然一步可以上7個臺階~~)

解題思路(編程思路):
1、這個數肯定是7的倍數,但肯定不是7,用x來定義,x = 7
2、要設定一個搜索範圍,這個範圍是7的倍數,不妨用i指代倍數,暫定最大值100倍,要1000倍也行,個人隨意哈…i = 1
3、既然是100倍,那最大值就是700咯,在700之間可能找到一個,也可能找到N個,那需要給找到的這個數做個標記,像在地圖上做標記一樣,豎起一個小旗吧,用flag來定義,flag = 0,賦值1時就是找到這個數的時候;
4、求以下餘數:
x%2 == 1
x%3 == 2
x%4 == 3
x%5 == 4
x%6 == 5
5、以上餘數條件必須同時成立,要用到邏輯操作符 and;

實現代碼:

x = 7 # 最終要求的階梯數x,一定是7的倍數,但肯定不是7,那就乾脆先賦值7
i = 1 # 倍數
flag = 0 #在限定的範圍內每找到一個數則舉起你手中的小旗,賦值1,見下面代碼

while i <= 100: #初始值7,限定最大搜索範圍100倍,即700,要7000,70000也行,請隨意~
    if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6 == 5):
        flag = 1
    else:
        x = 7 * (i+1) # 根據題意,x一定是7的整數倍,所以每次倍數累計+1
    i += 1

if flag == 1: # 找到舉起小旗的人,出列~~然後,當然是打印出來啦^_^
    print('階梯數是:', x)
else:
    print('在程序限定的範圍內找不到答案!')

看完這段代碼後,深深體會到,會寫代碼,就算早八百年前就把老師教的數學知識還給老師,照樣可以輕鬆的解答老師給的刁鑽習題,再深入一點想,除了數學領域,python可以應用的範圍應該更廣,難怪國家要把Python的學習列入教學大綱,有了python,媽媽再也不用擔心我的學習啦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章