এই টিউটোরিয়ালে, আমাদের খুঁজে বের করতে হবে যে 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
উপসংহার
টিউটোরিয়ালে আপনার কোন প্রশ্ন থাকলে মন্তব্য বিভাগে উল্লেখ করুন।