/*
* @lc app=leetcode.cn id=829 lang=typescript
*
* [829] 连续整数求和
*/
// @lc code=start
// @lc code=end
假设一个长度为
可以推导出
根据题意,需要保证
可以通过枚举
通过
function consecutiveNumbersSum(n: number): number {
let res = 0
for (let i = 1; i ** 2 + i <= 2 * n; i++) {
if ((2 * n + i * (i - 1)) % (2 * i) === 0) res++
}
return res
}
test.each([
{ input: { n: 8504986 }, output: 16 },
{ input: { n: 5 }, output: 2 },
{ input: { n: 9 }, output: 3 },
{ input: { n: 15 }, output: 4 },
])('input: n = $input.n', ({ input: { n }, output }) => {
expect(consecutiveNumbersSum(n)).toEqual(output)
})