愛因斯坦出了一道這樣的數(shù)學(xué)題:有一條長(zhǎng)階梯,若每步跨2階,則最最后剩一階,若每步跨3 階,則最后剩2階,若每步跨5階,則最后剩4階,若每步跨6階則最后剩5階。只有每次跨7階,最后才正好一階不剩。請(qǐng)問這條階梯共有多少階?
*問題分析與算法設(shè)計(jì)
根據(jù)題意,階梯數(shù)滿足下面一組同余式:
x≡1 (mod2)
x≡2 (mod3)
x≡4 (mod5)
x≡5 (mod6)
x≡0 (mod7)
*程序說明與注釋
#include
int main()
{
int i=1; /*i為所設(shè)的階梯數(shù)*/
while(!((i%2==1)&&(i%3==2)&&(i%5==4)&&(i%6==5)&&(i%7==0)))
++i; /*滿足一組同余式的判別*/
printf("Staris_number=%d\n",i);
}
*運(yùn)行結(jié)果
Staris_number=119
*問題的進(jìn)一步討論
此題算法還可考慮求1、2、4、5的最小公倍數(shù)n,然后判t(t為n-1)≡0(mod7)是否成立,若不成立則t=t+n,再進(jìn)行判別,直至選出滿足條件的t值。請(qǐng)自行編寫程序?qū)崿F(xiàn)
深圳北大青鳥