Computer >> Máy Tính >  >> Lập trình >> C ++

Số ô vuông tối đa có thể vừa với một tam giác cân góc vuông trong C ++

Nhiệm vụ được giao là tìm số ô vuông tối đa có cạnh ‘a’ có thể nằm gọn trong một tam giác cân góc cho trước có đáy là ‘s’ (Một tam giác cân có ít nhất 2 cạnh bằng nhau).

Bây giờ chúng ta hãy hiểu những gì chúng ta phải làm bằng cách sử dụng một ví dụ:

Đầu vào

s=5, a=1

Đầu ra

10

Giải thích - Số ô vuông trong cơ số có thể được tính bằng cách chia s cho a và trừ 1. Vậy số ô vuông trong cơ số =5/1 - 1 =4.

Tương tự khi 4 ô vuông dưới cùng được đặt thì chúng ta sẽ có được một tam giác cân mới với cơ sở là (s-a) và sau đó chúng ta lặp lại quy trình tương tự và lấy 3 hình vuông và cứ tiếp tục như vậy cho đến khi một hình vuông duy nhất được đặt ở trên cùng.

Số ô vuông tối đa có thể vừa với một tam giác cân góc vuông trong C ++

Đầu vào

s=7, a=2

Đầu ra

3

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Để tìm số ô vuông lớn nhất, chúng ta sẽ phải bắt đầu từ đáy của hình tam giác và tìm ra số ô vuông.

  • Để tìm số hình vuông, chúng ta sẽ chia cơ số s cho cạnh của hình vuônga và lấy nó trừ đi 1 =s / a - 1.

  • Sau đó, nó sẽ để lại cho chúng ta một tam giác cân khác với cơ sở (s - a) sẽ biến đổi một hình vuông nhỏ hơn hàng trước bên dưới nó mà chúng ta có thể tính toán theo cách sau -

Số bình phương ở hàng tiếp theo =(s - a) / a - 1 =(s / a - a / a) - 1 =s / a - 1 - 1 =s / a - 2 =số lượng ít hơn hàng trước.

  • Số ô vuông tiếp tục giảm cho đến khi bằng 1, do đó chúng ta chỉ phải tìm số ô vuông trong hàng cơ sở và sử dụng công thức cộng các số tự nhiên để tìm tổng cuối cùng là -

(n) * (n + 1) / 2

Trong trường hợp này, công thức trở thành - ((s / a) - 1) * (s / a) / 2

Ví dụ

#include<bits/stdc++.h>
using namespace std;
int Max(int s, int a){
   //formula for calculating maximum squares
   return ((s / a) - 1) * (s / a) / 2;
}
//Main function
int main(){
   int s = 5, a = 1;
   cout <<"Maximum squares possible are: "<<Max(s,a);
   return 0;
}

Đầu ra

10