Keep Fighting All The Time
著名的愛因斯坦階梯問題是這樣的:有一條長長長的階梯,,如果你每步跨2階,那麼最後剩1階;如果你每步跨3階,那麼最後剩2階;如果你每步跨5階,那麼最後剩4階;如果你每步跨6階,那麼最後剩5階;最有當你每步跨7階時,最後正好走完,一階也不剩。請問這條階梯最少有多少階。
從題目條件:“如果你每步跨2階,那麼最後剩1階;如果你每步跨3階,那麼最後剩2階;如果你每步跨5階,那麼最後剩4階;如果你每步跨6階,那麼最後剩5階;最有當你每步跨7階時,最後正好走完,一階也不剩。”可以得出規律,總的階梯數對每步跨的階梯數求餘的結果正好是剩餘階梯數。滿足題目的階梯數必須符合的條件是:
(num%2==1&&num%3==2&&num%5==4&&num%6==5&&num%7==0) 假設階梯數為num。
源程式:
#include<stdio.h> int main() { int i; //階梯數 int count = 0; //記錄滿足條件的階梯個數 for (i = 1; i < 1000; i++) { if (i % 2 == 1 && i % 3 == 2 && i % 4 == 3&& i % 5 == 4 && i % 6 == 5 && i % 7 == 0) //題目條件 { count++; while (count == 1) { printf("最少階梯數為:%d\n", i); //輸出結果 break; //如果有一個數滿足條件則跳出迴圈 } } } return 0; }
最總求出結果為:119。