leetcode 829 连续整数求和
Q: 给定一个正整数 N,试求有多少组连续正整数满足所有数字之和为 N?
思路:
假设有 K,我们需要满足满足 N = (x+1)+ (x+2) + … + (x+k)即可
即 N = k*x + k(k+1)/2
即 N-k+1)/2 能够被 k整除
假设现在
// 如果暴力做的话 O(n) 面试官通常会
// 假设有 K项 满足 N = (x+1)+ (x+2) + ... + (x+k) 即可
class Solution {
public:
int consecutiveNumbersSum(int N) {
int result = 0;
for (int k =1; k*(k+1)<=2*N; k++)
{
if((N - k*(k+1)/2) % k == 0) result++;
}
return result;
}
};