Ta được chu vi P của một tam giác. Chu vi là tổng tất cả các cạnh của tam giác. Mục đích là để tìm số tam giác vuông có thể tạo thành có cùng chu vi.
Nếu các cạnh của tam giác là a, b và c. Khi đó a + b + c =P và a2 + b2 =c2 (định lý pythagoras cho bất kỳ kết hợp nào của a, b và c)
Chúng tôi sẽ kiểm tra điều này bằng cách lấy a từ 1 đến p / 2 và b từ a + 1 đến p / 3. Khi đó c =p-a-b (a + b + c =p)
Đối với tất cả các tam giác vuông, áp dụng định lý Pythagoras. Các giá trị của a, b và c cũng phải thỏa mãn điều kiện tạo thành tam giác mà tổng của hai cạnh bất kỳ luôn lớn hơn ba.
Hãy cùng hiểu với các ví dụ.
Đầu vào - Chu vi P =12
Đầu ra - Tổng số tam giác vuông −1
Giải thích -
Giá trị duy nhất của a, b và c thỏa mãn a + b + c =P và a 2 + b 2 =c 2 (cũng là tổng của hai> phần ba bất kỳ) là 4, 3 và 5.
4 + 3 + 5 =12, 3 * 3 + 4 * 4 =5 * 5 (9 + 16 =25) cũng như 3 + 4> 5, 4 + 5> 3, 3 + 5> 4
Đầu vào - Chu vi P =10
Đầu ra - Tổng số tam giác vuông −0
Giải thích -
Không có giá trị nào của a, b và c có thể thỏa mãn a + b + c =P và a 2 + b 2 =c 2
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
-
Chúng tôi lấy một chu vi biến số nguyên lưu giá trị của chu vi đã cho.
-
Hàm rightTriangle (int p) lấy chu vi làm đầu vào và trả về tổng số tam giác vuông có thể có.
-
Số lượng biến lưu trữ số lượng tam giác vuông có thể có, ban đầu là 0.
-
Sử dụng vòng lặp for bắt đầu cho a =1 đến p / 2
-
Một lần nữa sử dụng vòng lặp for lồng nhau bắt đầu cho b =a + 1 đến p / 3 (hai cạnh không bao giờ bằng nhau trong tam giác vuông)
-
Tính c =p-a-b. Đối với điều này, a, b, c hãy kiểm tra xem (a + b> c &&b + c> a &&a + c> b).
-
Cũng kiểm tra định lý pythagoras trong đó a * a + b * b ==c * c. Nếu số gia tăng đúng.
-
Ở phần cuối trả về, số lượng hình tam giác vuông có thể có với chu vi đã cho.
-
Số lượt trả về là kết quả mong muốn.
Lưu ý - chúng tôi sẽ kiểm tra định lý pythagoras chỉ một kết hợp của a, b và c để có kết quả duy nhất.
Ví dụ
#include <bits/stdc++.h> using namespace std; int rightTriangles(int p){ int count = 0; int c=0; for( int a=1;a<p/2;a++){ for(int b=1;b<p/3;b++){ c=p-a-b; if( a+b>c && b+c>a && a+c>b) //condition for triangle{ if( (a*a+b*b)==c*c ) //pythagoras rule for right triangles { ++count; } } } } return count; } int main(){ int perimeter= 12; cout << "Total number of right triangles that can be formed: "<<rightTriangles(perimeter); 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 -
Total number of right triangles that can be formed: 1