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

輸出

4

更新於: 2020-11-26

313 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告