愛因斯坦出了一道這樣的數學題:有一條長階梯,若每步跨2階,則最後剩1階,若每步跨3階,則最後剩2階,若每步跨5階,則最後剩4階,若每步跨6階則最後剩5階。只有每次跨7階,最後才正好一階不剩。請問在 1~n 內,有多少個數能滿足?
用變數x表示階梯數,則x應滿足:
若每步跨2階,則最後剩1階 -- x%2=1;若每步跨3階,則最後剩2階 -- x%3=2;
若每步跨5階,則最後剩4階 -- x%5=4;
若每步跨6階,則最後剩5階 -- x%6=5;
每次跨7階,最後一階不剩 -- x%7=0。
因此,階梯數應該同時滿足上面的所有條件。
該問題要求輸入n值,求解出在的範圍內存在多少個滿足要求的階梯數。在演算法設計中,使用while迴圈以允許重複讀入多個n值。宣告乙個變數假設為flag,利用
語句 while(flag) 來進行控制
,當flag的值為1時可以接著輸入,若為0則結束迴圈。
對每一次讀入的n值,都要判斷在 1~n 的範圍內存在的滿足要求的階梯數個數。
判斷時可採用for迴圈,迴圈變數設為i,由題意,i的初值從7開始取即可,for迴圈的迴圈條件為 ifor語句的迴圈體中使用問題分析中列出的5個條件來檢驗每乙個i值,能夠滿足所有5個條件的i值即為所求的階梯數。
下面是完整的**:
#includeint main()
printf("在1-%ld之間,有%ld個數可以滿足愛因斯坦對階梯的要求。\n", n, sum);
printf("繼續請輸入1,否則輸入0:\n");
scanf("%d", &flag);
}return 0;
}
執行結果:輸入n:123
在1-123之間的階梯數為:
119在1-123之間,有1個數可以滿足愛因斯坦對階梯的要求。
繼續請輸入1,否則輸入0:
1
輸入n:1234
在1-1234之間的階梯數為:
119329
539749
9591169
在1-1234之間,有6個數可以滿足愛因斯坦對階梯的要求。
繼續請輸入1,否則輸入0:
趣味程式設計 愛因斯坦的數學題
愛因斯坦出了一道這樣的數學題 有一條長階梯,若每步跨2階,則最後剩一階,若每步跨3 階,則最後剩2階,若每步跨5階,則最後剩4階,若每步跨6階則最後剩5階。只有每次跨7階,最後才正好一階不剩。請問在1到n內,有多少個數能滿足?有多組資料,每一行只有乙個n。輸出滿足條件的個數。每個答案一行。分步考慮,...
趣味程式設計 愛因斯坦的數學題 中剩
問題 l 趣味程式設計 愛因斯坦的數學題 時間限制 1 sec 記憶體限制 128 mb 提交 2984 解決 1054 提交 狀態 討論版 題目描述 愛因斯坦出了一道這樣的數學題 有一條長階梯,若每步跨2階,則最後剩一階,若每步跨3 階,則最後剩2階,若每步跨5階,則最後剩4階,若每步跨6階則最後...
窮舉法 一道愛因斯坦的數學題
愛因斯坦出了一道這樣的數學題 有一條很長的樓梯,若每步跨2階,則最後剩1階 若每步跨3階,則最後剩2階 若每步跨5階,則最後剩4階 若每步跨6階則最後剩5階 每次跨7階,最後才正好一階不剩。請問這個樓梯至少有多少階?設總台階是n階,那麼滿足以下五個條件 由於n是自然數,且題目要求最小的n,所以可以從...