একটি নির্দিষ্ট ক্ষেত্রফলের জন্য একটি রেক্ট্যাঙ্গেল ডিজাইন করতে হবে যাতে: ১) ক্ষেত্রফল লক্ষ্যমাত্রার সমান, ২) প্রস্থ W দৈর্ঘ্য L-এর চেয়ে বড় না হয় (L >= W), ৩) L এবং W-এর পার্থক্য যতটা সম্ভব কম।
উদাহরণ: ক্ষেত্রফল 4 হলে আউটপুট [2,2]। সম্ভাব্য জোড়া: [1,4], [2,2], [4,1]। শর্ত অনুযায়ী [2,2] সেরা।
সমাধানের ধাপসমূহ
- i = sqrt(area) থেকে ১ পর্যন্ত কমাতে কমাতে লুপ চালান।
- যদি area % i == 0 হয়, তবে {area/i, i} রিটার্ন করুন।
- নাহলে {-1, -1} রিটার্ন করুন।
C++ কোড উদাহরণ
#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto> v) {
cout << "[";
for (int i = 0; i < v.size(); i++) {
cout << v[i] << ", ";
}
cout << "]" << endl;
}
class Solution {
public:
vector<int> constructRectangle(int area) {
for (int i = sqrt(area); i > 0; i--) {
if (area % i == 0) {
vector<int> v{ area / i, i };
return v;
}
}
return { -1, -1 };
}
};
int main() {
Solution ob;
print_vector(ob.constructRectangle(4));
return 0;
}
ইনপুট
4
আউটপুট
[2, 2, ]