輸入乙個整數s,列印出所有和為s的連續正整數序列(至少包含兩個數)。例如,對於輸入15,由於有1+2+3+4+5=15,4+5+6=15,7+8=15,所以列印出1~5、4~6、7~8三個序列。
有個比較好的做法是利用等差數列求和公式:s=a*n+n*(n-1)/2。這裡的a是第乙個元素,n是項數。
int solve(int k)
} return count;
}
這種方法只適用於這個特定的應用場景,題目稍微改變一下就不太好處理了。例如,要求求得的序列是某個數值中的連續序列,不再是自然數連續序列,這樣就沒辦法用這個方法了。這種情況下可以先將陣列排序,然後按照下面的方法求解即可。
int solve(int a, int n, int val)
else if (sum < val) else
} return count;
}
面試題40 輸出和為指定值的連續正數序列
思路 1.用兩個變數分別表示序列的最小值和最大值 首先把他們分別初始化為1和2,2.如果從最小值到最大值的序列之和大於 給定值,則從序列中去掉最小值,也就是增大最小值 3.如果從最小值到最大值的序列之和小於 給定值,則增大最大值,讓序列包含更多的數字 4.由於序列中至少有兩個數字,我們一直增加最小值...
和為S的連續正數序列
題目描述 小明很喜歡數學,有一天他在做數學作業時,要求計算出9 16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100 至少包括兩個數 沒多久,他就得到另一組連續正數和為100的序列 18,19,20,21,22。現在把問題交給你,你能不能也很快的...
和為s的連續正序列
題目 輸入乙個正數s,列印出所有和為s的連續正數序列 至少含有兩個數 例如輸入15,由於1 2 3 4 5 4 5 6 7 8 15,所以結果列印出3個連續序列1 5,4 6,7 8。解析 我們考慮兩個數small和big分別表示序列中的最小值和最大值。首先把small初始化為1,big初始化為2....