इस ट्यूटोरियल में, हमें यह पता लगाना है कि 1 से n तक की प्राकृत संख्याओं को दो भागों में विभाजित किया गया है या नहीं। इसे निम्नलिखित शर्तों को पूरा करना होगा।
-
दो श्रृंखला योग के बीच पूर्ण अंतर मी होना चाहिए।
-
और दो राशियों का GCD 1 यानी को-प्राइम होना चाहिए।
प्रथम n प्राकृत संख्याओं का योग है (n*(n+1))/2हम योग एक और योग दो पा सकते हैं क्योंकि हमारे पास कुल योग और अंतर एम है। नीचे दिए गए समीकरण देखें।
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
निष्कर्ष
यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उनका टिप्पणी अनुभाग में उल्लेख करें।