สมมติว่าเรามีตัวเลข n เราต้องหาจำนวนรายการของค่าบวกที่ต่อเนื่องกันซึ่งรวมกันเป็น n
ดังนั้น หากอินพุตเป็น n =15 ผลลัพธ์จะเป็น 4 เนื่องจากรายการที่เป็นไปได้คือ [1, 2, 3, 4, 5], [4, 5, 6], [7, 8], และ [15].
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้:
- เริ่มต้น :=1 สิ้นสุด :=1 x :=(n + 1)
- ผลรวม :=0
- ในขณะที่สิ้นสุด <=x ทำ:
- sum :=sum + end
- ในขณะที่ sum>=n ทำ:
- ถ้าผลรวมเท่ากับ n แล้ว:
- (เพิ่มจำนวนขึ้น 1)
- sum :=sum - เริ่มต้น
- (เพิ่มขึ้นเริ่มต้นด้วย 1)
- ถ้าผลรวมเท่ากับ 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