面試題 和為 n 連續正數序列

2021-07-10 12:49:31 字數 447 閱讀 1480

題目:輸入乙個正數 n,輸出所有和為 n連續正數序列。

例如輸入 15,由於 1+2+3+4+5=4+5+6=7+8=15,所以輸出 3 個連續序列 1-5、4-6和 7-8。

方法一:首先判斷n最多能由幾個連續數的和得到,假設最多由m個連續數和得到,那麼m(m+1)/2=n這樣很容易求得

m=(sqrt(8n+1)-1)/2。

由題義可知,n至少需要由兩個連續數和得來,所以外層迴圈從2到m

那麼是不是2到m中每一種情況都存在連續數和等於n呢?顯然不是

假設n由k個連續數和得來,2<=k

#include 

#include

using

namespace

std;

void sequence1(int n)

} }

網易面試題 和為n的連續正數序列

用兩個數small和big分別表示序列的最小值和最大值。首先把small初始化為1,big初始化為2,如果從small到big的序列的和大於n的話,向右移動small,相當於從序列中去掉較小的數字。如果從small到big的序列和小於n的話,向右移動big,相當於向序列中新增big的下乙個數字,一直...

面試題 和為s的連續正數序列

輸入乙個正數s,列印出所有和為s的連續正數序列 至少含有兩個數 例如,輸入15,由於1 2 3 4 5 4 5 6 7 8 15,所以列印出3個連續序列1 5 4 6和7 8。思路 依舊雙指標套路 void findcontinuoussequence int sum if sum 3 return...

和為n連續正數序列

51.和為n連續正數序列。題目 輸入乙個正數n,輸出所有和為n連續正數序列。例如輸入15,由於1 2 3 4 5 4 5 6 7 8 15,所以輸出3個連續序列1 5 4 6和7 8。分析 這是網易的一道面試題。這個題目出自微軟等資料結構 演算法面試100題 在devc 中編譯通過 name aut...