Hard
Consecutive Numbers Sum — C++
Full explanation · Time O(sqrt(n)) · Space O(1)
// Time: O(sqrt(n))
// Space: O(1)
class Solution {
public:
int consecutiveNumbersSum(int N) {
int result = 1;
while (N % 2 == 0) {
N /= 2;
}
for (int i = 3; i * i <= N; i += 2) {
int count = 0;
while (N % i == 0) {
N /= i;
++count;
}
result *= count + 1;
}
if (N != 1) {
result *= 1 + 1;
}
return result;
}
};