愛因斯坦階梯問題

2021-07-28 04:33:43 字數 1168 閱讀 2513

愛因斯坦曾經提出過這樣一道有趣的數學題:有乙個長階梯,若每步上2階,最後剩下1階;若每步上3階,最後剩2階;若每步上5階,最後剩下4階;若每步上6階,最後剩5階;只有每步上7階,最後剛好一階也不剩。請問該階梯至少有多少階。

我們假設階梯共有n階,我們可以很快的列出下面的式子:

n mod 2 = 1

n mod 3 = 2

n mod 5 = 4

n mod 6 = 5

n mod 7 = 0

用「強」解:

#include int jieti(void);

int main(int argc, char *argv)

int jieti(void)

return result;

}

轉化為一道數學問題:有乙個數除以2、3、4、5、6,餘數都為1,除以7則無餘數,這個數最小是多少?

由 n mod 2 = 1

n mod 3 = 2

n mod 5 = 4

n mod 6 = 5

n mod 7 = 0

以上我們可以得出乙個結論,即n總是比2,3,5,6的公倍數小1,為什麼呢?

因為,我們通過上式,可以有 2|(n+1),3|(n+1),5|(n+1),6|(n+1),7|n

可得,[2,3,5,6]|(n+1)

即,2,3,5,6的最小公倍數可以

整除n+1,而[2,3,5,6]=30

所以30|n+1,由帶餘除法可以有,30q=n+1,=> n=30q-1(q為自然數且不為0)

固有29+30*num=n  ==>  29+3030*3=7*19=119=n

即n=119

#include int upstair(void);

int main(int argc, char *argv)

int upstair(void)

return result;

}

最後,其實中國剩餘定理也能很輕鬆解決這類問題。

愛因斯坦階梯問題

include include intmain return0 還有一種思路,複習做題時遇到的tat int ladders 7 while ladders 3 2 ladders 5 4 ladders 6 5 ladders 14 printf d n ladders 窮舉遍曆法,效率太低,改進...

python 愛因斯坦階梯問題

解釋 設有台階若干,每跨2階,最後餘1階,跨3階餘2階,跨5階餘4階,跨6階餘5階,跨7階正好到達階梯頂部。分析 先假設有i,餘2等於1,餘3等於2,以此類推。1 i 2 1and i 3 2and i 5 4and i 6 5and i 7 0符合以上 即可。可以使用while和for語句進行書寫...

C語言 愛因斯坦的階梯問題

愛因斯坦曾經提出過這樣一道有趣的數學題 有乙個長階梯,若每步上2階,最後剩下1階 若每步上3階,最後剩2階 若每步上5階,最後剩下4階 若每步上6階,最後剩5階 只有每步上7階,最後剛好一階也不剩。請問該階梯至少有多少階 int i 7 int times 1000 while i 2 1 i 3 ...