連續整數求和

題目描述:

給定一個正整數 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

 

分析:swift

以N=15爲例,app

1個,15;spa

2個,7+8;code

3個,4+5+6;blog

5個,1+2+3+4+5;class

......di

N = x*n + n*(n-1)/2,N爲輸入的正整數,n爲個數,x爲一組數中最小的的數,若x存在且爲正整數,則知足;co

 

實現代碼以下:let

// 結果返回符合條件的組數
func consecutiveNumbersSum(_ N: Int) -> Int {
    var sum = 0
    for i in 1..<Int.max {
        let tmp = N - ((i-1)*i)/2
        if tmp < i {
            break
        }
        
        var x = -1
        
        if tmp % i == 0 && tmp / i > 0 {
            x = tmp / i
            sum += 1
           
           // 打印符合條件的組
            var nums = [Int]()
            for j in 0..<i {
                nums.append(x+j)
            }
            print("\(i): \(nums)")
        }
        
        if x <= 1 && x != -1 {
            break
        }
    }
    return sum
}
相關文章
相關標籤/搜索