Cho một diện tích hình chữ nhật làm đầu vào. Mục đích là tìm các cạnh của hình chữ nhật sao cho sự khác biệt giữa chiều dài và chiều rộng là nhỏ nhất.
Diện tích Hình chữ nhật =chiều dài * chiều rộng.
Ví dụ
Đầu vào - Diện tích =100
Đầu ra − Mặt bên của Hình chữ nhật với chênh lệch tối thiểu:
Chiều dài =10, Chiều rộng =10
Giải thích - Mặt có diện tích =100.
2 - 50, 4 - 25, 5 - 20, 10 - 10. Các cạnh có hiệu số nhỏ nhất là 10 - 10 với hiệu =0. Như ta biết hình vuông là hình chữ nhật có chiều dài tất cả các cạnh bằng nhau.
Đầu vào - Diện tích =254
Đầu ra - Cạnh của Hình chữ nhật với độ chênh lệch tối thiểu:
Chiều dài =127, Chiều rộng =2
Giải thích - Chỉ các cạnh có thể có với chênh lệch tối thiểu mới tạo thành hình chữ nhật có diện tích 254 là 127 và 2.
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
Trong phần này, chúng ta sẽ tìm giá trị căn bậc hai của diện tích và chuyển từ đó sang 1 để tìm các giá trị có chênh lệch nhỏ nhất và area =input area.
-
Lấy biến số nguyên Khu vực làm đầu vào.
-
Chức năng Hình chữ nhậtSides (int area1) lấy area1 và in ra chiều dài các cạnh của Hình chữ nhật với chênh lệch nhỏ nhất có thể giữa chiều dài và chiều rộng.
-
Lấy số nguyên chiều dài, chiều rộng, tmp1.
-
Đặt tmp1 =ceil (sqrt (area1))
-
Duyệt bằng vòng lặp for (int i =tmp1; i> 0; i--).
-
Nếu (area1% i ==0) thì đặt length =area / i và breadth =i.
-
Dừng lặp lại bằng cách sử dụng câu lệnh break.
-
Chiều dài và chiều rộng mặt in.
Ví dụ
#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; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra Kết quả sau
Sides of Rectangle with minimum difference : Length = 14, Breadth = 10