1. 程式人生 > 實用技巧 >和為 S 的連續正數序列

和為 S 的連續正數序列

題目描述:小明很喜歡數學,有一天他在做數學作業時,要求計算出 9~16 的和,他馬上就寫出了正確答案是 100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為 100 (至少包括兩個數)。沒多久,他就得到另一組連續正數和為 100 的序列: 18,19,20,21,22。現在把問題交給你,你能不能也很快的找出所有和為 S 的連續正數序列? Good Luck!

輸出描述:輸出所有和為 S 的連續正數序列。序列內按照從小至大的順序,序列間按照開始數字從小到大的順序。

分析:

輸入 sum = 20 (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)

1. 定義兩個指標,左指標從 1 開始,右指標從 2 開始;
2. 求和 1 + 2 = 3; 3. 迴圈開始; 4. 如果判斷 3 小於 20,右指標++,2 變為 3,求和 3 + 3 = 6,迴圈一直到右指標 = 6,和為21; 4. else if 判斷 21 大於 20,和減去左指標值,和為 21 - 1 = 20,左指標++,1 變為 2; 5. else 和與輸入一樣,存數;【再把右指標++,求和,再求剩餘組合】 6. 迴圈結束。 程式碼: