ได้รับเส้นรอบรูป P ของสามเหลี่ยม ต้องการนับจำนวนสามเหลี่ยมมุมฉากที่มีเส้นรอบรูปเท่ากับ P
เงื่อนไข
- a + b + c = P
- a² + b² = c² (ทฤษฎีพีทาโกรัส)
- ผลรวมด้านใดๆ 2 ด้าน > ด้านที่ 3
ตัวอย่าง
อินพุต: P = 12
เอาต์พุต: 1 (3, 4, 5)
อินพุต: P = 10
เอาต์พุต: 0
แนวทาง
- ลูป a = 1..P/2, b = a+1..P/3
- c = P - a - b
- ตรวจสอบเงื่อนไขสามเหลี่ยมและ a²+b²=c²
ตัวอย่างโค้ด C++
#include <bits/stdc++.h>
using namespace std;
int rightTriangles(int p) {
int count = 0;
for (int a = 1; a < p/2; a++) {
for (int b = a+1; b < p/3; b++) {
int c = p - a - b;
if (a + b > c && b + c > a && a + c > b) {
if (a*a + b*b == c*c) ++count;
}
}
}
return count;
}
int main() {
int perimeter = 12;
cout << "Total number of right triangles that can be formed: " << rightTriangles(perimeter);
return 0;
}
ผลลัพธ์
Total number of right triangles that can be formed: 1