Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรมนับจำนวนรายการต่อเนื่องที่มีผลรวมเป็น n ใน C++


สมมติว่าเรามีตัวเลข 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)
    • (เพิ่มส่วนท้ายทีละ 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