算法 – 求和为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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mac开发php集成环境「建议收藏」

    mac开发php集成环境「建议收藏」    我是一个使用mac开发的phper,虽然使用mac开发也就不到一年,但是mac上的一些技巧还是掌握的不错的,但实际开发中光有操作技巧是不行的,环境的效率也是很重要的,因为之前一直使用homestead 虚拟机,刚开始还没感觉它有多慢,但是后来感觉homestead真是太慢了,当然这可能也跟电脑的性能有关,我经常启动好几个虚拟机,在上面跑windows系统。…

    2022年6月28日
    38
  • 无需Visual Studio,5容易的 – 分为报告

    无需Visual Studio,5容易的 – 分为报告

    2022年1月5日
    53
  • Pycharm激活码_pycharm激活码2021

    Pycharm激活码_pycharm激活码2021激活成功教程激活法关于激活成功教程激活,很多时候输入注册码就显示过期了,很多原因是没有修改host,很简单并且只需要几分钟。方法如下:1、将“0.0.0.0account.jetbrains.com”中的内容添加到hosts文件中,hosts路径为:C:\Windows\System32\drivers\etc请注意:不需要加#2、打开http://idea.lanyus.com/,点击激…

    2022年8月27日
    12
  • clion永久激活码 Ubuntu_通用破解码

    clion永久激活码 Ubuntu_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    304
  • ubuntu16安装中文输入法_ubuntu输入法安装

    ubuntu16安装中文输入法_ubuntu输入法安装本文安装谷歌输入法。使用一段时间后发现,谷歌输入法用起来极舒服,比sougouforlinux好用多了。记得谷歌的中文输入法主要是北京分部在做,对googlecn的好感度飙升!!!安装fcitx-googlepinyin(Ctrl+Alt+T打开终端,输入)sudoapt-getinstallfcitx-googlepinyin输入密码开始安装(输入密码的时候光标是不会移动的,不会有对应密码的***这样的星号出来,只管输完密码按回车就行),命令行会停在[y/n]的确认行,输入y并

    2022年9月25日
    5
  • OpenBmc开发8:devtool简介与使用

    OpenBmc开发8:devtool简介与使用1简介devtool是yocto中的一个工具,此命令行工具作为可扩展SDK(eSDK)的一部分,是基础组件。可以使用devtool来帮助构建,测试和打包eSDK中的软件。可以使用该工具有选择地将构建的内容集成到OpenEmbedded构建系统构建的映像中。一般我们使用该工具主要用于修改源码,在修改后将提交加入到指定的layer中。2命令介绍常用的命令是:Add添加recipesModify提取源码Up…

    2022年10月5日
    6

发表回复

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

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