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