和为 S 的连续正数序列

题目描述:小明很喜欢数学,有一天他在做数学作业时,要求计算出 9~16 的和,他马上就写出了正确答案是 100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为 100 (至少包括两个数)。没多久,他就得到另一组连续正数和为 100 的序列: 18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为 S 的连续正数序列? Good Luck!

输出描述:输出所有和为 S 的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序。

分析:

输入 sum = 20 (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)

1. 定义两个指针,左指针从 1 开始,右指针从 2 开始;
2. 求和 1 + 2 = 3;
3. 循环开始;
4. 如果判断 3 小于 20,右指针++,2 变为 3,求和 3 + 3 = 6,循环一直到右指针 = 6,和为21;
4. else if 判断 21 大于 20,和减去左指针值,和为 21 - 1 = 20,左指针++,1 变为 2;
5. else 和与输入一样,存数;【再把右指针++,求和,再求剩余组合】
6. 循环结束。
 
PS:与牛客相同!
 
代码:

posted on 2020-09-08 09:33  _那些你很冒险的梦  阅读(120)  评论(0)    收藏  举报

导航