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

C++-এ প্রথম N প্রাকৃতিক সংখ্যা দুটি সেটে ভাগ করা যাবে কিনা যাতে দিয়ে পার্থক্য এবং কো-প্রাইম সম থাকে

এই টিউটোরিয়ালে, আমাদের বের করতে হবে ১ থেকে n পর্যন্ত প্রাকৃতিক সংখ্যাগুলো দুটি হালফে ভাগ করা যাবে কিনা। এটিকে নিচের শর্তগুলো পূরণ করতে হবে।

  • দুটি সিরিজের সমের এবসোলিউট পার্থক্য হবে m।
  • এবং দুটি সমের GCD হবে ১ অর্থাৎ কো-প্রাইম।

প্রথম n প্রাকৃতিক সংখ্যার সম হলো (n*(n+1))/2। আমরা টোটাল সম এবং পার্থক্য m দিয়ে sumOne এবং sumTwo বের করতে পারি। নিচের সমীকরণগুলো দেখুন।

sumOne + sumTwo = (n*(n+1))/2
sumOne - sumTwo = m

উদাহরণ

চেক করুন এবসোলিউট সম m-এর সমান কিনা। তারপর GCD চেক করুন।

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

bool canSplitIntoTwoHalves(int n, int m) {
    int total_sum = (n * (n + 1)) / 2;
    int sumOne = (total_sum + m) / 2;
    int sumTwo = total_sum - sumOne;
    if (total_sum < m) {
        return false;
    }
    if (sumOne + sumTwo == total_sum && sumOne - sumTwo == m) {
        return (__gcd(sumOne, sumTwo) == 1);
    }
    return false;
}

int main() {
    int n = 10, m = 17;
    if (canSplitIntoTwoHalves(n, m)) {
        cout << "Can split";
    } else {
        cout << "Can't split";
    }
    return 0;
}

আউটপুট

Can split

উপসংহার

টিউটোরিয়ালে যদি কোনো প্রশ্ন থাকে, তবে কমেন্ট সেকশনে জানান।

  1. C++ ব্যবহার করে ম্যাট্রিক্সের দুটি ডায়াগোনালের যোগফলের পার্থক্য বের করা

  2. দেওয়া পার্থক্যের সাথে একটি জোড়া খুঁজে বের করা C++-এ

  3. C++-এ বড় সংখ্যা সমান যোগফলের দুই বা অধিক সেগমেন্টে ভাগ করা যায় কিনা চেক করা

  4. C++-এ দিয়ে गये GCD এবং LCM থেকে যেকোনো পেয়ার খুঁজে বের করা