Saturday, January 5, 2019

829. Consecutive Numbers Sum



6.22 %
class Solution {
    public int consecutiveNumbersSum(int N) {
        // N = (a1 + ak)*k/2 = (a1 + a1 + (k - 1)) * k / 2
        // 2N = 2a1 * k + (k - 1) * k
        // 2ka1 = k(k-1) - 2N -> to find a valid a1, we need k(k-1)-2N to be multiple of 2k
        int result = 1;
        for (int k = 2; k * (k - 1) < 2 * N; k++) {
            if ((k * (k - 1) - 2 * N) % (2 * k) == 0) result++;
        }
        return result;
    }
}

No comments:

Post a Comment