用等差数列求和公式计算
和为S的连续正数序列
http://www.nowcoder.com/questionTerminal/c451a3fd84b64cb19485dad758a55ebe
用等差数列求和公式计算,将问题转换为求取初值,数组范围为2到sqrt(2*sum)
class Solution {
public:
vector<vector<int> > FindContinuousSequence(int sum) {</int>
vector<vector<int>> res; if (sum <= 0) return res; int n = sqrt(2*sum); int ao; double ao_o; for ( ; n>=2 ; n--) { ao_o = 1.0*sum - 0.5*n*(n-1); ao_o /= (1.0*n); if (fabs(ao_o-int(ao_o)) < 1e-5) { vector<int> ires; ao = int(ao_o); for (int i=0; i<n; i++) { ires.push_back(ao + i); } res.push_back(ires); } } return res; }
};