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