博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
829. 连续整数求和-leetcode
阅读量:5347 次
发布时间:2019-06-15

本文共 1072 字,大约阅读时间需要 3 分钟。

题目:给定一个正整数 N,试求有多少组连续正整数满足所有数字之和为 N?

示例 1:

输入: 5输出: 2

解释: 5 = 5 = 2 + 3,共有两组连续整数([5],[2,3])求和后为 5。

示例 2:

输入: 9输出: 3

解释: 9 = 9 = 4 + 5 = 2 + 3 + 4

示例 3:

输入: 15输出: 4

解释: 15 = 15 = 8 + 7 = 4 + 5 + 6 = 1 + 2 + 3 + 4 + 5

说明: 1 <= N <= 10 ^ 9

/* N = (p+0)+(p+1)+(p+2)+...+(p+i-1)  = p*i +i*(i-1)/2    ===>        2*N = (p*2+i-1)*i (p,i都是正整数) */ import "math"func consecutiveNumbersSum(N int) int {    var sum = 0    dataChan := make(chan int, 10)    outChan := make(chan byte, 10)go func() {    defer close(dataChan)    for i := 1; float64(i) <= math.Sqrt(float64(2*N)); i++ {        if (2*N)%i == 0 {            dataChan <- i        }    }}()go func() {    for {        if i, ok := <-dataChan; !ok {            close(outChan)            return        } else {            p := (2*N)/i - i - 1            if p >= 0 && (p&1 == 0) {                // fmt.Println("offset,i", p/2, i)                outChan <- 0            }        }    }}()for {    if _, ok := <-outChan; ok {        sum++    } else {        break    }}return sum}

转载于:https://www.cnblogs.com/fwdqxl/p/9391385.html

你可能感兴趣的文章
UILabel
查看>>
【热门技术】三种SEO方式
查看>>
[Hades_技术]哈迪斯初级技术应用
查看>>
SQLiteOpenHelper
查看>>
Luogu P1141 01迷宫【搜索/dfs】By cellur925
查看>>
js onclick事件传参
查看>>
WiCloud 商业Wi-Fi管理平台
查看>>
团队项目--未完待续
查看>>
双重标准,我该怎么解决
查看>>
python中的网页标签等字符处理
查看>>
Mybatis输入类型和结果类型
查看>>
Linux常用命令(五)
查看>>
Linux常用命令(四)
查看>>
Linux常用命令(六)
查看>>
Linux常用命令(六)
查看>>
Linux常用命令(八)
查看>>
Linux常用命令(七)
查看>>
Linux常用命令(九)
查看>>
Linux常用命令(十一)
查看>>
Linux常用命令(十)
查看>>