Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Hình chữ nhật với độ chênh lệch tối thiểu giữa chiều dài và chiều rộng trong C++


Cho diện tích của một hình chữ nhật làm đầu vào. Mục tiêu là tìm các cạnh của hình chữ nhật sao cho độ chênh lệch 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 - Cạnh 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 - Các cặp cạnh có diện tích = 100: 2-50, 4-25, 5-20, 10-10. Cặp cạnh có độ chênh lệch nhỏ nhất là 10-10 với độ chênh lệch = 0. Như chúng ta biết, hình vuông là hình chữ nhật có 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ó một cặp cạnh có thể tạo thành hình chữ nhật diện tích 254 là 127 và 2.

Phương pháp sử dụng trong chương trình dưới đây

Chúng ta sẽ tìm giá trị căn bậc hai của diện tích và duyệt ngược từ đó xuống 1 để tìm các giá trị có độ chênh lệch nhỏ nhất và diện tích bằng diện tích đầu vào.

  • Nhập biến nguyên Area.

  • Hàm rectangleSides(int area1) nhận area1 và in ra chiều dài, chiều rộng của hình chữ nhật với độ chênh lệch nhỏ nhất.

  • Khai báo biến nguyên length, breadth, tmp1.

  • Gán 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ì gán length = area1 / i và breadth = i.

  • Dừng lặp bằng lệnh break.

  • In ra length và breadth.

Ví dụ mã

#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 = area1 / i;          breadth = i;          break;       }    }    cout<<"Cạnh của hình chữ nhật với độ chênh lệch tối thiểu :"<<endl;    cout << "Chiều dài = " << length << ", Chiều rộng = "   << breadth << endl; } int main(){    int Area = 140;    rectangleSides(Area);    return 0; }

Đầu ra

Nếu chạy mã trên sẽ cho kết quả:

Cạnh của hình chữ nhật với độ chênh lệch tối thiểu : Chiều dài = 14, Chiều rộng = 10