কম্পিউটার

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


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

  • দুটি সিরিজ যোগফলের মধ্যে পরম পার্থক্য m হওয়া উচিত।

  • এবং দুটি রাশির GCD 1 হওয়া উচিত, অর্থাৎ, সহ-প্রধান।

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

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 সহ যেকোনো জোড়া খুঁজুন