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

ผลรวมตัวเลขติดต่อกันใน C++


สมมติว่าเรามีจำนวนเต็มบวก N เราต้องหาว่าเราจะเขียนมันเป็นผลรวมของจำนวนเต็มบวกต่อเนื่องได้กี่วิธี

ดังนั้น หากอินพุตเท่ากับ 10 ผลลัพธ์จะเป็น 3 เนื่องจากเราสามารถแทน 10 เป็น 5 + 5 และ 7 + 3 ได้ จึงมี 2 วิธีที่แตกต่างกัน

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ยกเลิก :=1

  • สำหรับการเริ่มต้น i :=2, (เพิ่ม i โดย 1) ทำ −

    • ผลรวม :=(i * (i + 1)) / 2

    • ถ้า sum> N แล้ว −

      • ออกจากวง

    • rem :=N - ผลรวม

    • ret :=ret + (1 เมื่อ rem mod i เป็น 0, มิฉะนั้น 0)

  • รีเทิร์น

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int consecutiveNumbersSum(int N) {
      int ret = 1;
      for(int i = 2; ; i++){
         int sum = (i * (i + 1)) / 2;
         if(sum > N) break;
         int rem = N - sum; ret += (rem % i == 0);
      }
      return ret;
   }
}; main(){
   Solution ob;cout << (ob.consecutiveNumbersSum(10));
}

อินพุต

10

ผลลัพธ์

2