इस समस्या में, हमें दो पूर्णांक N और D दिए गए हैं। हमारा कार्य यह जांचना है कि क्या पहले N प्राकृतिक संख्याओं के समुच्चय से दो ऐसे सेट बनाए जा सकते हैं जिनके योग का अंतर D हो।
आइए एक उदाहरण से समझते हैं:
इनपुट - N=5, D=3
आउटपुट - हाँ
व्याख्या -
1, 2, 3, 4, 5 में से हम दो सेट बना सकते हैं: set1 = {1, 2, 3} और set2 = {4, 5}, इससे अंतर 3 मिलेगा। {4+5} - {1+2+3} = 9 - 6 = 3इस समस्या को हल करने के लिए हम कुछ गणितीय गणनाओं का उपयोग करेंगे।
हम जानते हैं कि सभी संख्याओं का योग दोनों सेटों के तत्वों के योग के बराबर होता है:
N प्राकृतिक संख्याओं के योग का सूत्र:
sum(s1) + sum(s2) = (n*(n+1))/2. दिया गया है: 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<<"पहले "<<N<<" प्राकृतिक संख्याओं से अंतर "<<D<<" के साथ दो सेट बनाना "; isSetPossible(N, D)?cout<<"संभव है":cout<<"संभव नहीं है"; return 0; }आउटपुट
पहले 10 प्राकृतिक संख्याओं से अंतर 7 के साथ दो सेट बनाना संभव है