给定一个正整数 N,试求有多少组连续正整数满足所有数字之和为 N?
示例 1:
输入: 5
输出: 2
解释: 5 = 5 = 2 + 3,共有两组连续整数([5],[2,3])求和后为 5。
示例 2:
输入: 9
输出: 3
解释: 9 = 9 = 4 + 5 = 2 + 3 + 4
分析:对于连续的整数,可以类比于公差是1的等差数列,首项为a,连续n个数的和N=(2a+n-1)*n/2,即求2N=(2a-1+n)n整数解的个数
所以只要枚举出满足以下两个条件的结果即可:
1.n是2N的因子
2.2N除以因子n后 再减去n 应当为奇数(2a-1 是整数而且是奇数)
int consecutiveNumbersSum(int N) {
int temp=0;
N*