इस समस्या में, हमें दो पूर्णांक N और D दिए गए हैं। हमारा कार्य यह जांचना है कि क्या D के अंतर वाले पहले N प्राकृतिक संख्याओं के सेट से सेट करना संभव है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट -एन=5 डी =3
आउटपुट - हाँ
स्पष्टीकरण -
Out of 1, 2, 3, 4, 5.
We can have two sets set1= {1, 2, 3} and set2 = {4, 5}, this will give difference 3.
{4+5} - {1+2+3} = 9- 6 = 3 इस समस्या को हल करने के लिए, हमारे पास कुछ गणितीय गणनाएँ होंगी।
हम जानते हैं, सभी संख्याओं का योग दो समुच्चय के तत्वों का योग होता है,
n प्राकृत संख्या सूत्र का योग,
sum(s1) + sum(s2) = (n*(n+1))/2. Given in the problem, sum(s1) - sum(s2) = D
दोनों को जोड़ने पर हमें मिलता है,
2*sum(s1) = ((n*(n+1))/2) + D
अगर यह स्थिति सही है, तो ही समाधान संभव है।
उदाहरण
हमारे समाधान के कार्यान्वयन को दिखाने के लिए कार्यक्रम,
#include <iostream>
using namespace std;
bool isSetPossible(int N, int D) {
int set = (N * (N + 1)) / 2 + D;
return (set % 2 == 0);
}
int main() {
int N = 10;
int D = 7;
cout<<"Creating two set from first "<<N<<" natural number with difference "<<D<<" is ";
isSetPossible(N, D)?cout<<"possible":cout<<"not possible";
return 0;
} आउटपुट
Creating two set from first 10 natural number with difference 7 is possible