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)
    • (将 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

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

输出

4

更新于: 2020-11-26

313 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告