算法 – 求和为n的连续正整数序列(C++)

算法 – 求和为n的连续正整数序列(C++)

大家好,又见面了,我是全栈君。

//****************************************************************************************************
//
//  求和为n的连续正整数序列 - C++ - by Chimomo
//
//  题目: 输入一个正整数n,输出全部和为n的连续正整数序列。比如:输入15,因为1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。

//// Answer: Suppose n = i+(i+1)+...+(j-1)+j, then n = (i+j)(j-i+1)/2 = (j*j-i*i+i+j)/2 => j^2+j+(i-i^2-2n) = 0 => j = (sqrt(1-4(i-i^2-2n))-1)/2 => j = (sqrt(4i^2+8n-4i+1)-1)/2.// We know 1 <= i < j <= n/2+1, so for each i in [1,n/2], do this arithmetic to check if there is a integer answer.//// Note: 二次函数 ax^2+bx+c=0 的求根公式为: x = (-b±sqrt(b^2-4ac)) / 2a。////****************************************************************************************************#include <iostream>#include <cassert>#include <stack>#include <math.h>using namespace std ;int FindConsecutiveSequence(int n){ int count = 0; for (int i = 1; i <= n/2; i++) { double sqroot = sqrt(4*i*i + 8*n - 4*i + 1); int floor = sqroot; if(sqroot == floor) { cout << i << "-" << (sqroot - 1) / 2 << endl; count++; } } return count;}int main(){ int count = FindConsecutiveSequence(15); cout << "Totally " << count << " sequences found." << endl; return 0;}// Output:/*1-54-67-8Totally 3 sequences found.*/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115523.html原文链接:https://javaforall.net

(0)
上一篇 2022年2月3日 上午9:00
下一篇 2022年2月3日 上午10:00


相关推荐

  • 字节豆包大模型的几个重磅更新

    字节豆包大模型的几个重磅更新

    2026年3月12日
    2
  • 云计算与虚拟化架构比较

    云计算与虚拟化架构比较看到一篇虚拟化管理软件的详细比较文章 推荐一下 http www osedu net article linux 2011 06 24 242 html

    2026年3月17日
    2
  • python基础系列教程——Python的安装与测试:python解释器、PyDev编辑器、pycharm编译器

    python基础系列教程——Python的安装与测试:python解释器、PyDev编辑器、pycharm编译器全栈工程师开发手册(作者:陈玓玏)python教程全解白手起家,从头开启python的开发环境搭建。一.如何安装Python在https://www.python.org/下载安装包。下载下来一个exe文件,直接双击运行。选择InstallNow,立即安装。配置环境变量:右键开始——控制面板——系统——高级系统配置——环境变量。找…

    2022年7月23日
    14
  • linux bash安装教程,linux bash命令怎么用?win10 linux bash命令使用教程

    linux bash安装教程,linux bash命令怎么用?win10 linux bash命令使用教程linuxbash 命令怎么用 微软在 win10 一周年更新预览版中加入了 ubuntubash 命令支持 但是很多用户并不知道怎么使用 今天 U 大侠小编就针对这个问题给大家介绍下 win10 系统 linuxbash 命令使用教程 win10 版 linuxbash 命令使用教程 1 没安装 Bash 的用户可以按照之前介绍的方法 先在设置 更新和安全 针对开发人员中选择 开发人员模式 点击后会下载 开发人员模式

    2026年3月16日
    2
  • 基于单片机的八路抢答器设计论文_抢答器的程序流程图

    基于单片机的八路抢答器设计论文_抢答器的程序流程图文末下载完整资料1.1八路扫描式抢答器的概述  本文介绍的八路数显抢答器具有电路简单、成本较低、操作方便、灵敏可靠等优点,经使用效果良好,具有较高的推广价值。无线遥控抢答器,它由8个发射器和1个接收器组成,可用于8组或8组以下的智力竞赛中。比赛前,将参赛组从0至7编号,每组发给对应的一个发射器。将接收器放于各组中央或前方。主持人按一下启动键后,抢答开始。此后,哪一组最先按下发射器上的抢答键,接收器就立即显示该组的组号并锁定,同时发出3次清脆的“叮咚”声。以后,按下任何一路抢答键均不起反映。只有主

    2022年10月20日
    4
  • linux iptable命令用法

    linux iptable命令用法iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。语法iptables(选项)(参数)选项-t&lt;表&gt;:指定要操纵的表;-A:向规则链中添加条目;-D:从规则链中删除条目;-i:向规则链中插入条目;-R:替换规则链中的条目;-L:显示规则链中已有的条目;-F:清楚规则链中已…

    2022年5月28日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号