एक आयत का क्षेत्रफल दिया गया है। लक्ष्य है उस आयत की भुजाएँ ढूंढना जिनका क्षेत्रफल दिए गए क्षेत्रफल के बराबर हो और जिनकी लंबाई और चौड़ाई के बीच का अंतर न्यूनतम हो।
आयत का क्षेत्रफल = लंबाई × चौड़ाई।
उदाहरण
इनपुट - क्षेत्रफल = 100
आउटपुट - न्यूनतम अंतर वाले आयत की भुजाएँ:
लंबाई = 10, चौड़ाई = 10
व्याख्या - क्षेत्रफल 100 वाली भुजाएँ: 2-50, 4-25, 5-20, 10-10। न्यूनतम अंतर 10-10 का है जिसका अंतर 0 है। जैसा कि हम जानते हैं, वर्ग एक आयत है जिसकी सभी भुजाएँ समान होती हैं।
इनपुट - क्षेत्रफल = 254
आउटपुट - न्यूनतम अंतर वाली भुजाएँ:
लंबाई = 127, चौड़ाई = 2
व्याख्या - 254 क्षेत्रफल वाले आयत के लिए केवल संभावित भुजाएँ 127 और 2 हैं जिनका अंतर न्यूनतम है।
उपयोग किया गया दृष्टिकोण
इसमें हम क्षेत्रफल का वर्गमूल निकालते हैं और वहां से 1 तक घटते हुए उन मानों को ढूंढते हैं जिनका अंतर न्यूनतम हो और क्षेत्रफल दिए गए क्षेत्रफल के बराबर हो।
पूर्णांक चर Area को इनपुट के रूप में लें।
फ़ंक्शन rectangleSides(int area1) area1 लेता है और न्यूनतम संभव अंतर वाली आयत की भुजाओं की लंबाई प्रिंट करता है।
पूर्णांक length, breadth, tmp1 लें।
tmp1 = ceil(sqrt(area1)) सेट करें।
for लूप का उपयोग करके (int i = tmp1; i > 0; i--) ट्रैवर्स करें।
यदि (area1 % i == 0) तो length = area1/i और breadth = i सेट करें।
break स्टेटमेंट का उपयोग करके पुनरावृत्ति रोकें।
भुजाएँ length और breadth प्रिंट करें।
उदाहरण
#include <bits/stdc++.h> using namespace std; void rectangleSides(int area1){ int length, breadth; int tmp1 = ceil(sqrt(area1)); for (int i = tmp1; i > 0; i--) { if (area1 % i == 0) { length = ceil(area1 / i); breadth = i; break; } } cout<<"Sides of Rectangle with minimum difference :"<<endl; cout << "Length = " << length << ", Breadth = " << breadth << endl; } int main(){ int Area = 140; rectangleSides(Area); return 0; } आउटपुट
उपरोक्त कोड चलाने पर निम्नलिखित आउटपुट उत्पन्न होगा:
Sides of Rectangle with minimum difference : Length = 14, Breadth = 10