小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!
# -*- coding:utf-8 -*- classSolution: defFindContinuousSequence(self, tsum): # write code here res = [] left, right = 1, 2 mid = tsum // 2 + 1 while left < mid: tmp_sum = (right - left + 1) * (left + right) / 2 if tmp_sum > tsum: left += 1 elif tmp_sum < tsum: right += 1 else: cur = left tmp_ls = [] while cur <= right: tmp_ls.append(cur) cur += 1 res.append(tmp_ls) right += 1 return res