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