C++程序:计算连续列表中和为n的列表数量
假设我们有一个数字n,我们需要找到和为n的正连续值的列表的数量。
因此,如果输入像n = 15,则输出将为4,因为可能的列表为:[1, 2, 3, 4, 5]、[4, 5, 6]、[7, 8]和[15]。
为了解决这个问题,我们将遵循以下步骤
- begin := 1,end := 1,x := (n + 1)
- sum := 0
- 当 end <= x 时,执行以下操作
- sum := sum + end
- 当 sum >= n 时,执行以下操作
- 如果 sum 等于 n,则
- (将计数加1)
- sum := sum - begin
- (将 begin 加1)
- 如果 sum 等于 n,则
- (将 end 加1)
- 返回 count + 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
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP