কম্পিউটার টিউটোরিয়াল

C++-এ последователь পূর্ণসংখ্যা যোগফল হিসেবে সংখ্যা প্রকাশ

সমস্যা বিবরণ

একটি ধনাত্মক পূর্ণসংখ্যা N দেওয়া থাকলে, সেটিকে последователь ধনাত্মক পূর্ণসংখ্যার যোগফল হিসেবে কতভাবে প্রকাশ করা যায় তা বের করতে হবে।

উদাহরণ

N = 10 → আউটপুট = 3 (১০ = ১০, ১+২+৩+৪, ৫+৫? — আসলে ১০ = ১০, ১+২+৩+৪, এবং ৫+৫ নয়, বরং ১০ = ১০, ১+২+৩+৪, আরেকটি ভুল উদাহরণ দিয়ে হয়েছে। সঠিক: ১০ = ১০, ১+২+৩+৪, আরেকটি?) — কোড অনুযায়ী আউটপুট ২।

সমাধান পদ্ধতি

  • গাণিতিক সূত্র: N = k*a + k(k-1)/2, যেখানে k = টার্ম সংখ্যা, a = শুরুতে সংখ্যা।
  • a = (N - k(k+1)/2) / k পূর্ণসংখ্যা হলে ভ্যালিড।
  • k = 2 থেকে sqrt(2N) পর্যন্ত চেক করা হয়।
  • বেস কেস: N নিজে (k=1) সবসময় ভ্যালিড।

C++ বাস্তবায়ন

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    int consecutiveNumbersSum(int N) {
        int ret = 1; // k=1 (N নিজে)
        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;
    }
};

int main() {
    Solution ob;
    cout << ob.consecutiveNumbersSum(10);
    return 0;
}

ইনপুট ও আউটপুট

ইনপুট: 10

আউটপুট: 2

  1. C++-এ টেট্রান্যাচি নাম্বার জেনারেট করা

  2. C++-এ অ্যালিকোট সম (Aliquot Sum)

  3. C++ প্রোগ্রাম: প্রাকৃতিক সংখ্যাগুলোর যোগফল (Sum of Natural Numbers)

  4. C++ প্রোগ্রাম: দুটি সংখ্যা যোগ করা (Addition)