和为S的连续正数序列
2017-01-25 17:23
162 查看
题目描述
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! 输出描述:
输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺
利用等差数列的公式: (n - 1 + 2* a1) * n == tsum * 2
要先对a1进行从小到大遍历,因为题目要求从小到大输出,
再对n进行从小到大遍历,
如果出现相等的时候,则把该数列存储起来,便于返回结果
# -*- coding:utf-8 -*- class Solution: def FindContinuousSequence(self, tsum): # write code here flag = False li2 = [] for a in range(1, 1000): for n in range(2, 1000): if n * (n - 1 + 2 * a) < tsum * 2: continue elif n * (n - 1 + 2 * a) > tsum * 2: break else: li1 = [] for num in range(a, a + n): li1.append(num) li2.append(li1) return li2 if __name__ == "__main__": a = Solution() print a.FindContinuousSequence(100)
相关文章推荐
- 所有和为S的连续正数序列
- 剑指offer--和为S的连续正数序列
- 和为n连续正数序列
- 剑指offer面试题41_2 和为s的连续正数序列(java实现)
- 【100题】第五十一题 和为n连续正数序列
- 剑指offer 41 - 和为s的两个数字VS为s的连续正数序列
- 输入一个正数n,输出所有和为n 连续正数序列
- 和为s的两个数字VS和为s的连续正数序列
- 【剑指offer】面试题41-和为S的两个数VS和为S的连续正数序列
- 和为S的连续正数序列
- 剑指offer-和为S 的连续正数序列-Java
- 51 和为n连续正数序列
- 和为n连续正数序列 【微软面试100题 第五十一题】
- 和为S的连续正数序列
- 剑指offer-41.和为S的连续正数序列
- 《剑指offer》刷题笔记(知识迁移能力):和为S的连续正数序列
- 牛客网刷题之和为S的连续正数序列
- 和为n连续正数序列
- 和为s的连续正数序列
- 和为S的连续正数序列