इस समस्या में, हमें तीन मान A, B और N दिए गए हैं। हमारा कार्य n धनात्मक पूर्णांक ज्ञात करना है जो दिए गए समीकरणों को संतुष्ट करते हैं।
समस्या का विवरण - हमें दोनों समीकरणों को संतुष्ट करने वाले एन सकारात्मक मूल्यों को खोजने की जरूरत है,
x12 + x22 + … xn2 ≥ A x1 + x2 + … xn ≤ B
यदि मौजूद हो तो n मान प्रिंट करें, अन्यथा -1 प्रिंट करें।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
N = 4, A = 65, B = 16
आउटपुट
1 1 1 8
स्पष्टीकरण
समीकरण हैं -
12 + 12 + 12 + 82 = 1 + 1 + 1 + 64 = 67 ≥ 65 1 + 1 + 1 + 8 = 11 < 16
समाधान दृष्टिकोण
वर्ग योग को अधिकतम करके समस्या का एक सरल समाधान है। विचार यह है कि वर्ग योग को अधिकतम करने के लिए एक संख्या को प्राथमिक संख्या के रूप में उपयोग किया जाए और दूसरे को 1 के रूप में उपयोग किया जाए। इस प्रकार इसका उपयोग करके हम वर्ग योग को अधिकतम कर सकते हैं और योग की स्थिति को संतुष्ट कर सकते हैं।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
उदाहरण
#include <bits/stdc++.h> using namespace std; void findNintegers(int N, int A, int B) { vector<int> numbers; for (int i = 0; i < N - 1; i++) numbers.push_back(1); if (B - (N - 1) <= 0) { cout << "-1"; return; } numbers.push_back(B - (N - 1)); int vals = 0; for (int i = 0; i < N; i++) vals += numbers[i] * numbers[i]; if (vals < A) { cout << "-1"; return; } for (int i = 0; i < N; i++) cout << numbers[i] << " "; } int main(){ int N = 4, A = 65, B = 17; cout<<N<<" positive integers that satisfy the given equations are "; findNintegers(N, A, B); return 0; }
आउटपुट
4 positive integers that satisfy the given equations are 1 1 1 14