C ++中的连续数字和
假设我们有一个正整数N,我们必须找到多少种方法可以将其写为连续的正整数之和?
因此,如果输入像10,那么输出将是3,这是因为我们可以将10表示为5+5和7+3,所以有两种不同的方式。
为了解决这个问题,我们将遵循以下步骤-
ret:=1
对于初始化i:=2,(将i增加1),请执行-
从循环中出来
总和:=(i*(i+1))/2
如果总和>N,则-
雷姆:=N-总和
ret:=ret+(当remmodi为0时为1,否则为0)
返回ret
让我们看下面的实现以更好地理解-
示例
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int consecutiveNumbersSum(int N) {
int ret = 1;
for(int i = 2; ; i++){
int sum = (i * (i + 1)) / 2;
if(sum > N) break;
int rem = N - sum; ret += (rem % i == 0);
}
return ret;
}
}; main(){
Solution ob;cout << (ob.consecutiveNumbersSum(10));
}输入项
10
输出结果
2