LeetCode-in-Java

829. Consecutive Numbers Sum

Hard

Given an integer n, return the number of ways you can write n as the sum of consecutive positive integers.

Example 1:

Input: n = 5

Output: 2

Explanation: 5 = 2 + 3

Example 2:

Input: n = 9

Output: 3

Explanation: 9 = 4 + 5 = 2 + 3 + 4

Example 3:

Input: n = 15

Output: 4

Explanation: 15 = 8 + 7 = 4 + 5 + 6 = 1 + 2 + 3 + 4 + 5

Constraints:

Solution

public class Solution {
    public int consecutiveNumbersSum(int n) {
        int ans = 0;
        for (int i = 1; i * i <= n; i++) {
            if (n % i > 0) {
                continue;
            }
            int j = n / i;
            if (i % 2 == 1) {
                ans++;
            }
            if (j != i && j % 2 == 1) {
                ans++;
            }
        }
        return ans;
    }
}