C++计算总和为n的连续列表个数的程序
假设我们有一个数字n,我们必须找到总和为n的正连续值列表的数量。
所以,如果输入像n=15,那么输出将是4,因为可能的列表是:[1,2,3,4,5],[4,5,6],[7,8],和[15]。
为了解决这个问题,我们将按照以下步骤操作:
开始:=1,结束:=1,x:=(n+1)
总和:=0
而结束<=x,做:
如果sum与n相同,则:
sum:=sum-开始
(开始增加1)
(计数增加1)
总和:=总和+结束
当sum>=n时,请执行以下操作:
(增加1)
返回计数+1
让我们看下面的实现来更好地理解:
示例
#include using namespace std; int solve(int n) { int begin=1,end=1,x=(n+1)/2,count=0; long int sum=0; while(end <= x){ sum += end; while(sum >= n){ if(sum == n) count++; sum -= begin; begin++; } end++; } return count+1; } main(){ cout << (solve(15)); }
输入
15输出结果
4