Consecutive Numbers Sum
Created: October 19, 2019 by [lek-tin]
Last updated: October 19, 2019
Given a positive integer N
, how many ways can we write it as a sum of consecutive positive integers?
Example 1
Input: 5
Output: 2
Explanation: 5 = 5 = 2 + 3
Example 2
Input: 9
Output: 3
Explanation: 9 = 9 = 4 + 5 = 2 + 3 + 4
Example 3
Input: 15
Output: 4
Explanation: 15 = 15 = 8 + 7 = 4 + 5 + 6 = 1 + 2 + 3 + 4 + 5
Note
1 <= N <= 10 ^ 9
.
Solution
Python
class Solution(object):
def consecutiveNumbersSum(self, N):
# 1 + 2 + 3 + ... + k = k(k+1)/2
# 2N = k(2x + k + 1)
ans = 0
k = 1
while k*k <= 2*N:
if 2*N % k == 0:
y = 2 * N / k - k - 1
if y % 2 == 0 and y >= 0:
ans += 1
k += 1
return ans