class Solution { public: int consecutiveNumbersSum(int N) { // Assume that we pick n elements start from x, then // for (x + (n - 1) * x) * n / 2 == N, // ie. n * x + n * (n - 1) / 2 == N // Just check for some n, we have valid x. int cnt = 0; for (int n = 1; ; n++) { // n * x = N - blabla int nx = N - (n * (n - 1) >> 1); if (nx < n) break; if (nx % n == 0) cnt++; } return cnt; } };