给定一个正整数 n
,返回 连续正整数满足所有数字之和为 n
的组数 。
代码很简单,难点在于数学推导
class Solution {
public:
bool can(int n, int k) {
if (k % 2) return !(n % k);
return (n % k) && !((2 * n) % k);
}
int consecutiveNumbersSum(int n) {
int ans = 0;
int m = 2 * n;
for (int i = 1; i * (i + 1) <= m; i++)
if (can(n, i)) ans++;
return ans;
}
};