和为n连续正数序列

【转】http://zhedahht.blog.163.com/blog/static/25411174200732711051101/

 

题目:输入一个正数n,输出所有和为n连续正数序列。

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

分析:这是网易的一道面试题。

这道题和本面试题系列的第10题有些类似。我们用两个数small和big分别表示序列的最小值和最大值。首先把small初始化为1,big初始化为2。如果从small到big的序列的和大于n的话,我们向右移动small,相当于从序列中去掉较小的数字。如果从small到big的序列的和小于n的话,我们向右移动big,相当于向序列中添加big的下一个数字。一直到small等于(1+n)/2,因为序列至少要有两个数字。

基于这个思路,我们可以写出如下代码:

void PrintContinuousSequence(int small, int big);

/////////////////////////////////////////////////////////////////////////
// Find continuous sequence, whose sum is n
/////////////////////////////////////////////////////////////////////////
void FindContinuousSequence(int n)
{
      if(n < 3)
            return;

      int small = 1; 
      int big = 2;
      int middle = (1 + n) / 2;
      int sum = small + big;

      while(small < middle)
      {
            // we are lucky and find the sequence
            if(sum == n)
                  PrintContinuousSequence(small, big);

            // if the current sum is greater than n, 
            // move small forward
            while(sum > n)
            {
                  sum -= small;
                  small ++;

                  // we are lucky and find the sequence
                  if(sum == n)
                        PrintContinuousSequence(small, big);
            }

            // move big forward
            big ++;
            sum += big;
      }
}

/////////////////////////////////////////////////////////////////////////
// Print continuous sequence between small and big
/////////////////////////////////////////////////////////////////////////
void PrintContinuousSequence(int small, int big)
{
      for(int i = small; i <= big; ++ i)
            printf("%d ", i);

      printf("\n");
}

2023.03.27更新大麦网PC端抢购软件和使用教程 近期发现大麦网页端抢购页面悄然发生变化,之前可以在页面选择票价、档次,并且点击按钮进行购票,现在不行了,新的页面如下图所示。已经安全没有了点击按钮,因此,但是并不代表不能像以前之前那样。 阅读详情

相关推荐

数字IC设计(8)之AHB-Lite总线(持续更新)

AHB总线全称Advanced High-performance Bus,意为先进高性能总线。推出该总线的目的是补充APB总线在性能上的不足,APB总线适合挂载低速外设,所以AHB总线用来挂载高性能的外设,这样子可以分工合作,节约资源。AHB总线可以实现多主多从的连接,此时需要设计仲裁机和matrix(矩阵),AHB-Lite一般用于一主多从,此时则不需要仲裁机和matrix,但是也可以用AHB-Lite来实现多主多从,就是设计多个layer,每个layer是一主多从,再把各个layer连起来;

qq_69440734的博客 2256

输入一个正数 n,输出所有和为 n 连续正数序列。

1、输入一个正数 n,输出所有和为 n 连续正数序列         例如输入 15,由于 1+2+3+4+5=4+5+6=7+8=15,所以输出 3 个连续序列 1-5、4-6 和 7-8。         分析:我们用两个数small和big分别表示序列的最小值和最大值。首先把small初始化为 1,big初始化为 2。如果从small到big的序列的和大于n的话,我们向右移动smal

dazhong159的专栏 6643

从FinFET到GAA:手把手解读2nm芯片制造的关键技术(含BSPDN避坑指南)

本文深入解读了2nm芯片制造从FinFET向全环绕栅极(GAA)晶体管架构演进的核心技术,并重点剖析了背面供电网络(BSPDN)的三种实现路径及其工程挑战。文章旨在帮助工程师理解技术变革的内在逻辑,并为应对2nm节点设计中的关键问题提供实用指南。

weixin_29294975的博客 292

程序员面试题精选(26):和为n连续正数序列

题目:输入一个正数n,输出所有和为n连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。分析:这是网易的一道面试题。这道题和本面试题系列的第10题有些类似。我们用两个数small和big分别表示序列的最小值和最大值。首先把small初始化为1,big初始化为2。如果从small到big的序列的和大于n的话,我们向右移

yysdsyl的专栏 1966

vSphere环境证书更新/续订案例及注意事项

早期VMware的用户随后“十年之期”已到,陆陆续续出现各种登录问题,证书报错告警等,主要包含6.5到7.0的版本,VMware服务器虚拟化环境涉及的证书及类型较多,在实际更新中会出现各种奇怪的问题,有些坑耗费了大量的troubleshooting时间,极端情况下一天能看到十多遍如下报错😂本文整理了一个近期的更新案例,以及之前处理过的一些问题,仅作参考CA根证书颁发机构,用于签发其他组件的证书,其他证书的有效期不会超过根证书。

RaySun的技术Blog 3207

从无人机到机械臂:深入聊聊LQR和LQG在实际项目里的那些‘坑’与最佳实践

本文深入探讨了LQR和LQG在无人机和机械臂等实际项目中的应用挑战与最佳实践。从系统建模的妥协艺术到调参的系统化方法,再到离散化的细节处理,文章分享了工程实践中的宝贵经验。特别强调了如何应对传感器噪声、未建模动态等现实问题,并提供了实用的调试工具和诊断流程,帮助工程师避免常见陷阱,提升控制系统的稳定性和性能。

weixin_28683391的博客 387

输入一个正数 n,输出所有和为n 连续正数序列。

题目:输入一个正数 n,输出所有和为n 连续正数序列。 例如输入 15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3 个连续序列1-5、4-6 和7-8。 可以发现任意自然数序列其实是公差为1的等差数列,那么数列前N项和公式有a1*n +n*(n-1)/2 = sn,而这里sn = 输入的正整数input。通过分析a1只需在集合[1,input/2]中,把上式等效变形为n*

天道酬勤! 5275

全志F1C100S/F1C200S学习笔记(1)——基础简介及资料

资料: 荔枝派资料下载站 荔枝派github 荔枝派中文论坛 荔枝派DIY-github资料 荔枝派Nano 全流程指南 芒果派 坑网

丨晋丨 1万+

输入一个正整数n,输出所有和为n连续正数序列(例如:15输出 [ [1,2,3,4,5 ] , [ 4,5,6 ] , [ 7,8 ] ] )

连续正数序列:公差为1的等差数列 function get_value(value) { let num = value let arr = [] let newnum = 0 if (num % 2 == 1) { arr.push([(num - 1) / 2, (num + 1) / 2...

小不点的博客 1393

【BIM入门实战】Revit创建地形的几种方法及优缺点

Revit在体量和场地选项卡的【地形表面】工具可以创建三维地形,有三种方法:放置点、指定点文件和导入实例文件、倾斜摄影点云技术和InfraWorks地形生成。 文章目录1. 放置点2. 指定点文件3. 导入实例文件4. 倾斜摄影点云技术5. InfraWorks地形生成 1. 放置点 放置点功能位于体量和场地选项卡下地形表面,点开找到放置点,并通过自定义设置点的高程值来创建地形的高程数据。 优点:通过用户自定义高程点来绘制模型,使地形更为精确。 缺点:只适用于面积小的项目,面积太大,人工效率低下。 .

智慧空间实验室 4762

AI Agent Harness内容审核:生成内容合规

在过去的几年里,生成式人工智能(Generative AI)技术取得了爆炸性的发展。从 GPT-4、Claude 这样的文本生成模型,到 Midjourney、Stable Diffusion 这样的图像生成工具,再到 Sora 这样的视频生成模型,AI 已经具备了媲美甚至超越人类的内容创作能力。然而,技术是一把双刃剑。随着生成式 AI 的普及,内容安全与合规风险也呈指数级增长。

AI架构师小马 300

输入一个正数 n,输出所有和为 n 连续正数序列

很好的一个题目,很久不写都忘了。。。。。。推荐给大家输入一个正数 n,输出所有和为 n 连续正数序列         例如输入 15,由于 1+2+3+4+5=4+5+6=7+8=15,所以输出 3 个连续序列 1-5、4-6 和 7-8。         分析:我们用两个数small和big分别表示序列的最小值和最大值。首先把small初始化为 1,big初始化为 2。如果从small到big的...

paulfrank_zhang的博客 4665

在Ubuntu系统中安装和使用wxPython进行Python图形用户界面(GUI)开发

在本文中,我将向您展示如何在Ubuntu系统上安装和使用wxPython,并提供一些示例代码来帮助您开始使用这个强大的工具。在MyFrame的构造函数中,我们创建了一个wx.Panel和一个按钮,并将按钮的点击事件绑定到一个自定义的方法on_button_click上。最后,我们创建了一个wx.App的实例,创建了一个MyFrame对象并显示它,最后通过调用app.MainLoop()启动应用程序的主事件循环。这只是一个简单的示例,但它演示了如何使用wxPython创建一个基本的GUI应用程序。

qq_37934722的博客 1040

【算法题】:和为N的连续正数序列

本文介绍了两种寻找和为N的连续正数序列的方法。方法一采用双指针技术,通过移动start和end指针来动态计算区间和,时间复杂度为O(N)。方法二通过数学公式计算连续序列和,使用双重循环寻找符合条件的序列。两种方法都能正确输出结果,如输入15时都能得到[[1,2,3,4,5],[4,5,6],[7,8]]。双指针法更高效,适合处理较大N值;方法二思路直观但效率稍低。两种实现都提供了JavaScript示例代码。

记录来时的路 266

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

输入一个正数 n,输出所有和为 n 的连续正数序列 [No. 25]

问题: 输入一个正数n,输出所有和为 n 的连续正数序列。例如:输入15,由于1+2+3+4+5 = 4+5+6 = 7+8=15,所以输出3个连续序列1-5、4-6和7-8。 分析: 首先,假设我们是从6开始判断的,因为 6 比 15 小, 而且由于要求序列是连续的,所以,下一次只能选择5,剩余的值是 15 - 6 = 9,因为5 比9 小,我们只能再继续下去,这次选择是 4, 而剩余

Yuwen's Hero 1921

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

和为n的连续正数序列(C语言)

输入一个正数n,输出所有和为n连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。 定义两个变量n1和n2,实际上是连续序列的两个端点数,主要就是涉及到这两个数的右移。 计算满足条件n的最后一个数lastNum,比如15的lastNum是8,判断循环的条件是n1&lt;lastNum。 如果sum等于n就输出,如果还没有...

qq_35637447的博客 1422

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

每日一题 输入一个正数n,输出所有和为n连续正数序列

每日一题 输入一个正数n,输出所有和为n连续正数序列 题目要求:输入一个正数n,输出所有和为n连续正数序列 /** * 输入一个正数n,输出所有和为n连续正数序列 * @param num * @author 郑涛 */ public void test(int num) { //正数序列的最大数 一定小于 num / 2 + 1 int min = 1; //记录连续序列的初始值 int max = 0; //记录连续序列的终止值 //从一开始遍历到num for

qq_34370249的博客 361

算法习题51:输入一个正数n,输出所有和为n连续正数序列

和为n连续正数序列。 题目:输入一个正数n,输出所有和为n连续正数序列。 例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。 分析:这是网易的一道面试题。 -------------------------------------- 解法一: 既然是连续的,我们当然可以借助两个游标,分别记住起始点和终止点,另一个变量记录和sum

ylf13的专栏 2567

输入一个正数n,输出所有和为n 连续正数序列

题目: 输入一个正数n,输出所有和为n 连续正数序列

liu09110003420的专栏 2767

51 和为n连续正数序列

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

小人物的草稿本 695

和为 n 连续正数序列

题目:输入一个正数 n,输出所有和为 n连续正数序列。 例如输入 15,由于 1+2+3+4+5=4+5+6=7+8=15,所以输出 3 个连续序列 1-5、4-6和 7-8。   方法一:首先判断n最多能由几个连续数的和得到,假设最多由M个连续数和得到,那么M(M+1)/2=n这样很容易求得 M=(sqrt(8n+1)-1)/2。 由题义可知,n至少需要由两个连续数和得来,所以

wumuzi520的专栏 4791

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

51.和为 n 连续正数序列(数组)。题目:输入一个正数 n,输出所有和为 n 连续正数序列。例如输入 15,由于 1+2+3+4+5=4+5+6=7+8=15,所以输出 3 个连续序列 1-5、 4- 6 和 7-8。分析:这是网易的一道面试题。   一道简单的小题 /* 51.和为 n 连续正数序列(数组)。 题目:输入一个正数 n,输出所有和为 n 连续正数序列。 例如输入 ...

weixin_33937778的博客 146

输入一个正数n,输出所有和为n连续正数序列

<br />51.和为n连续正数序列。<br />题目:输入一个正数n,输出所有和为n连续正数序列。<br />例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。<br />分析:这是网易的一道面试题。<br /> <br />VB.NET codes as below:<br /> <br />ModuleMyModule<br /> <br />    Sub Main()<br />        Print(15)<br /> <br /> 

738
上一篇: 二元树的深度
下一篇: 跳台阶问题
caoruntaogmail
博客等级 码龄18年 3粉丝 302原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值