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
.
-------------------------------------------------------------
x*n+i*(i-1)/2==n, take care the borderline cases:
class Solution:
def consecutiveNumbersSum(self, N):
res = 0
for i in range(1,N+1): #bug1: N+1
tmp = i*(i-1)//2
if (N>tmp and (N-tmp)%i == 0): #bug2: N>=tmp
res += 1
elif (N<tmp):
return res
return res
s = Solution()
print(s.consecutiveNumbersSum(15))