Welcome to Subscribe On Youtube

829. Consecutive Numbers Sum

Description

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:

  • 1 <= n <= 109

Solutions

  • class Solution {
        public int consecutiveNumbersSum(int n) {
            n <<= 1;
            int ans = 0;
            for (int k = 1; k * (k + 1) <= n; ++k) {
                if (n % k == 0 && (n / k + 1 - k) % 2 == 0) {
                    ++ans;
                }
            }
            return ans;
        }
    }
    
  • class Solution {
    public:
        int consecutiveNumbersSum(int n) {
            n <<= 1;
            int ans = 0;
            for (int k = 1; k * (k + 1) <= n; ++k) {
                if (n % k == 0 && (n / k + 1 - k) % 2 == 0) {
                    ++ans;
                }
            }
            return ans;
        }
    };
    
  • class Solution:
        def consecutiveNumbersSum(self, n: int) -> int:
            n <<= 1
            ans, k = 0, 1
            while k * (k + 1) <= n:
                if n % k == 0 and (n // k + 1 - k) % 2 == 0:
                    ans += 1
                k += 1
            return ans
    
    
  • func consecutiveNumbersSum(n int) int {
    	n <<= 1
    	ans := 0
    	for k := 1; k*(k+1) <= n; k++ {
    		if n%k == 0 && (n/k+1-k)%2 == 0 {
    			ans++
    		}
    	}
    	return ans
    }
    
  • function consecutiveNumbersSum(n: number): number {
        let ans = 0;
        n <<= 1;
        for (let k = 1; k * (k + 1) <= n; ++k) {
            if (n % k === 0 && (Math.floor(n / k) + 1 - k) % 2 === 0) {
                ++ans;
            }
        }
        return ans;
    }
    
    

All Problems

All Solutions