ในปัญหานี้ เราได้จำนวนเต็มที่แสดงถึงด้านหนึ่งของสามเหลี่ยมมุมฉาก เราต้องตรวจสอบว่าเป็นไปได้ไหมที่จะมีสามเหลี่ยมมุมฉากกับด้าน a หากเป็นไปได้ ให้หาอีกสองด้านที่เหลือของสามเหลี่ยมมุมฉาก
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
อินพุต
a = 5
ผลลัพธ์
Sides : 5, 12, 13
คำอธิบาย
ด้านของมุมฉากหาได้เป็น 5 2 + 12 2 =13 2
แนวทางการแก้ปัญหา
วิธีแก้ปัญหาอย่างง่ายคือการใช้ทฤษฎีบทปีทาโกรัส เรารู้ว่าด้านของสามเหลี่ยมมุมฉากเป็นไปตามทฤษฎีบทปีทาโกรัส ซึ่งก็คือ
a2 + b2 = c2
โดยที่ a และ b เป็นด้านของสามเหลี่ยม และ c คือด้านตรงข้ามมุมฉากของสามเหลี่ยม
เมื่อใช้สิ่งนี้ เราจะคำนวณค่าของ b และ c โดยใช้ a
กรณีที่ 1
If a is even, c = (a2 + 4) + 1 b = (a2 + 4) - 1
กรณีที่ 2
If a is odd, c = (a2 + 1)/ 2 c = (a2 - 1)/ 2
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
ตัวอย่าง
#include <bits/stdc++.h> #include <cmath> using namespace std; #define PI 3.1415926535 void printOtherSides(int n) { int b,c; if (n & 1) { if (n == 1) cout << -1 << endl; else{ b = (n*n-1)/2; c = (n*n+1)/2; } } else { if (n == 2) cout << -1 << endl; else{ b = n*n/4-1; c = n*n/4+1; } } cout<<"Sides : a = "<<n<<", b = "<<b<<", c = "<<c<<endl; } int main() { int a = 5; printOtherSides(a); return 0; }
ผลลัพธ์
Sides : a = 5, b = 12, c = 13