<div>
Given an integer n, return the number of ways you can write n as the sum of consecutive positive integers.
Example 1:
<pre>Input: n = 5 Output: 2 Explanation: 5 = 2 + 3 </pre>
Example 2:
<pre>Input: n = 9 Output: 3 Explanation: 9 = 4 + 5 = 2 + 3 + 4 </pre>
Example 3:
<pre>Input: n = 15 Output: 4 Explanation: 15 = 8 + 7 = 4 + 5 + 6 = 1 + 2 + 3 + 4 + 5 </pre>
Constraints:
1 <= n <= 10<sup>9</sup>
</div>
题目大意:
求连续整数的和等于N的个数
解题思路:
只有Fintech考,数学题。思路见注释
解题步骤:
N/A
注意事项:
Python代码:
1
2
3
4
5
6
7
8# x, x+1, ... , x+k-1
# (x + x+k-1) * k / 2 = 2x+k-1) = n, x = [n - k(k-1)/2]/k
def consecutiveNumbersSum(self, n: int) -> int:
res = 1
for i in range(2, int(math.sqrt(2 * n) + 1)):
if (n - i * (i - 1) / 2) % i == 0:
res += 1
return res
算法分析:
时间复杂度为O(n),空间复杂度O(1)


