题目要求:

  输入一个正数n,输出所有和为n连续正数序列(至少两个)。

  例如输入15,由于1+2+3+4+5 = 4+5+6 = 7+8 = 15.所以输出3个连续序列1~5,4~6,7~8.

  参考资料:剑指offer第41题。

题目分析:

  由题意可知:从1~n中找连续的整数序列。

  可以用两个变量small和big表示一个区间small~big,再用一个变量sum表示这个区间的数的和如果sum>n,则small向后移,如果sum<n则big向后移,如果sum=n则输出该区间small~big.

代码实现:

  

  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void FindContinuousSequence(int n);
  6.  
  7. int main(void)
  8. {
  9. int n;
  10.  
  11. cout << "请输入n:";
  12.  
  13. cin >> n;
  14. FindContinuousSequence(n);
  15.  
  16. return ;
  17. }
  18. void Print(int small,int big)
  19. {
  20. cout << "连续序列有:";
  21. for(int i = small;i<=big;i++)
  22. cout << i << " ";
  23. cout << endl;
  24. }
  25. void FindContinuousSequence(int n)
  26. {
  27. //因为至少两个正数,1+2=3,因此如果n<3则不存在连续序列
  28. if(n<)
  29. return;
  30. int small = ;
  31. int big = ;
  32. //至少两个数,则最小的数肯定小于mid,作为退出while条件
  33. int mid = (+n)/;
  34. int curSum = small+big;
  35. while(small<mid)
  36. {
  37. if(curSum==n)
  38. Print(small,big);
  39. while(curSum>n && small<mid)
  40. {
  41. curSum -= small;
  42. small++;
  43. if(curSum==n)
  44. Print(small,big);
  45. }
  46. big++;
  47. curSum += big;
  48. }
  49. }

  

和为n连续正数序列 【微软面试100题 第五十一题】的更多相关文章

  1. 微软100题第51题:和为n连续正数序列

    题目:输入一个正数n,输出全部和为n连续正数序列.比如输入15,因为1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5.4-6和7-8. 方法一:记录序列长度.推断首项是否满足条 ...

  2. 【剑指Offer面试编程题】题目1354:和为S的连续正数序列--九度OJ

    题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久, ...

  3. 面试题57-II.和为s的连续正数序列

    面试题57-II.和为s的连续正数序列 1.题目 LeetCode-面试题57-II.和为s的连续正数序列 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数 ...

  4. 【编程题目】和为 n 连续正数序列

    51.和为 n 连续正数序列(数组).题目:输入一个正数 n,输出所有和为 n 连续正数序列.例如输入 15,由于 1+2+3+4+5=4+5+6=7+8=15,所以输出 3 个连续序列 1-5. 4 ...

  5. 和为S的连续正数序列

    小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他就得到另一 ...

  6. 剑指offer系列46---和为s的连续正数序列

    [题目]输出所有和为S的连续正数序列.序列为:1,2,3,4,5,6,7,8................ * 序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序 package com.e ...

  7. 和为S的两个数字VS和为s的连续正数序列

    题目:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,输出任意一对即可. 例如输入数组1.2.4.7.11.15和数字15.由于4+11=15, ...

  8. 【面试题041】和为s的两个数字VS和为s的连续正数序列

    [面试题041]和为s的两个数字VS和为s的连续正数序列 题目一:     输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,输出任意一对即可. ...

  9. 剑指Offer40 和为s的连续正数序列

    /************************************************************************* > File Name: 40_Contin ...

随机推荐

  1. Guice入门

    参考链接:http://www.cnblogs.com/xd502djj/archive/2012/06/25/2561414.html Google Guice范例解说之使用入门 http://co ...

  2. Java实现的断点续传功能

    代码中已经加入了注释,需要的朋友可以直接参考代码中的注释.下面直接上功能实现的主要代码: import java.io.File; import java.io.FileNotFoundExcepti ...

  3. 织梦list/arclist标签调用文章内容

    list标签: 1. 进入后台->模型表单-> 频道模型 -> 内容模型管理 -> 修改对应的模型 2. 列表附加字段-填写body 3. 调用时添加“addfields='b ...

  4. C#调用C++接口返回字符串的做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 现在有这样一种情景,假如C#调用C++接口需要返回一个字符串.因为字符串是不定长的,因此传递一个定长的字符串进去是不合 ...

  5. edittext 设置不自动获取焦点

    给父级控件 设置两个属性,可以把焦点抢夺过去,最好是没有任何事件的父级控件(本人比较喜欢在xml文件的跟布局设置,因为页面的跟布局一般情况下,是不会设置任何事件的) android:focusable ...

  6. iOS Programming Autorotation, Popover Controllers, and Modal View Controllers

    iOS Programming Autorotation, Popover Controllers, and Modal View Controllers  自动旋转,Popover 控制器,Moda ...

  7. Electron 入门文档

    https://www.kancloud.cn/wizardforcel/electron-doc/137765 https://segmentfault.com/a/1190000006207600 ...

  8. jsp另外五大内置对象之-exception

    //有异常的页面 <%@ page language="java" contentType="text/html; charset=utf-8" page ...

  9. 洛谷 P1433 吃奶酪

    题目描述 房间里放着n块奶酪.一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处. 输入输出格式 输入格式: 第一行一个数n (n<=15) 接下来每行2个实数,表示第i块 ...

  10. [学习笔记] C++ 历年试题解析(一)--判断题

    少说话.. 程序题链接:https://www.cnblogs.com/aoru45/p/9898691.html 14级试题---选择题 1. 引用在声明时必须对其初始化,以绑定某个已经存在的变量( ...