C語言 愛因斯坦的數學題

2021-09-24 12:59:42 字數 1226 閱讀 6154

愛因斯坦出了一道這樣的數學題:有一條長階梯,若每步跨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值即為所求的階梯數。

下面是完整的**:

#include

int 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,所以可以從...