समस्या
ऐसे धनात्मक पूर्णांक a < b < c खोजें जिनके लिए a² + b² = c² और a + b + c = perimeter हो। पात्र त्रिभुजों में सबसे बड़ा गुणनफल a × b × c लौटाएँ, या यदि कोई भी नहीं है तो −1 लौटाएँ। यह निश्चित परिमाप वाले मूल कार्य का सामान्यीकरण है और कई उत्तरों को स्पष्ट रूप से संभालता है।
pythagorean_product(perimeter) को लागू करें।
इनपुट
perimeter: तीनों भुजाओं का आवश्यक योग।
आउटपुट
सबसे बड़ा गुणनफल लौटाएँ, या यदि कोई त्रिभुज पात्र नहीं है तो −1 लौटाएँ।
सीमाएँ
3 ≤ perimeter ≤ 100,000। गुणनफल signed 64-bit पूर्णांकों में समा जाता है।
उदाहरण
इनपुट:
perimeter = 30
अपेक्षित आउटपुट:
expected = 780
इनपुट:
long long perimeter = 30;
अपेक्षित आउटपुट:
long long expected = 780;
इनपुट:
long perimeter = 30;
अपेक्षित आउटपुट:
long expected = 780;
व्याख्या
त्रिभुज (5, 12, 13) है: 25 + 144 = 169 और 5 + 12 + 13 = 30। इसका गुणनफल 780 है।
इनपुट:
perimeter = 11
अपेक्षित आउटपुट:
expected = -1
इनपुट:
long long perimeter = 11;
अपेक्षित आउटपुट:
long long expected = -1;
इनपुट:
long perimeter = 11;
अपेक्षित आउटपुट:
long expected = -1;
व्याख्या
कोई भी बढ़ते हुए धनात्मक पूर्णांक राइट-त्रिभुज भुजाएँ 11 का योग नहीं बनातीं।
कैसे हल करें
पहले खुद कोशिश करें, फिर एक-एक करके संकेत खोलें।
संकेत 1
कुछ ही perimeters right triangle बना सकते हैं, इसलिए पहले side-sum constraint से search narrow करो।
संकेत 2
हर possible shortest side के लिए, perimeter से बाकी दो sides derive करो और right-triangle condition check करो।
संकेत 3
एक से ज़्यादा triangle fit हो सकते हैं; सबसे बड़ा product रखो और कुछ valid न मिले तो no-solution return करो।
अपेक्षित जटिलता
समय O(perimeter^2), अतिरिक्त स्थान O(1)
संदर्भ
यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।