829. Consecutive Numbers Sum
https://leetcode.com/problems/consecutive-numbers-sum/
问有多少种等差(d == 1)数列和会是N。等差数列求和公式是m[2x + (m - 1)]/2, x是首项,m是项数。因此遍历所有可能的m即可。
/*
* @lc app=leetcode id=829 lang=cpp
*
* [829] Consecutive Numbers Sum
*/
// @lc code=start
class Solution {
public:
int consecutiveNumbersSum(int N) {
int res = 0;
for (int m = 1; ; ++m) {
int x = N - m * (m - 1) / 2;
if (x <= 0) break;
if (x % m == 0) ++res;
}
return res;
}
};
// @lc code=end
Last updated
Was this helpful?