เราได้เส้นรอบรูป P ของรูปสามเหลี่ยม ปริมณฑลคือผลรวมของทุกด้านของรูปสามเหลี่ยม เป้าหมายคือการหาจำนวนสามเหลี่ยมมุมฉากที่สามารถสร้างได้ซึ่งมีเส้นรอบรูปเท่ากัน
ถ้าด้านของสามเหลี่ยมคือ a,b และ c จากนั้น a + b + c =P และ a2 + b2 =c2 ( ทฤษฎีบทพีทาโกรัสสำหรับการรวมกันของ a, b และ c )
เราจะตรวจสอบสิ่งนี้โดยใช้ a จาก 1 ถึง p/2 และ b จาก a+1 ถึง p/3 จากนั้น c =p-a-b (a+b+c=p)
สำหรับสามเหลี่ยมมุมฉากทั้งหมด ให้ใช้ทฤษฎีบทพีทาโกรัส ค่าของ a, b และ c ควรเป็นไปตามเงื่อนไขของการสร้างสามเหลี่ยมโดยที่ผลรวมของสองด้านใดๆ มากกว่าสามเสมอ
มาทำความเข้าใจกับตัวอย่างกัน
ป้อนข้อมูล − ปริมณฑล P=12
ผลผลิต − จำนวนสามเหลี่ยมมุมฉากทั้งหมด −1
คำอธิบาย −
ค่าเดียวของ a, b และ c ที่ตรงตาม a+b+c=P และ a 2 + b 2 =c 2 ( ผลรวมของสอง> สาม ) คือ 4, 3 และ 5
4+3+5=12, 3*3+4*4=5*5 ( 9+16=25 ) ก็ 3+4>5, 4+5>3, 3+5>4
ป้อนข้อมูล − เส้นรอบวง P=10
ผลผลิต − จำนวนสามเหลี่ยมมุมฉากทั้งหมด −0
คำอธิบาย −
ไม่มีค่าของ a, b และ c ที่สามารถตอบสนอง a+b+c=P และ a 2 + b 2 =c 2
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
เราใช้ค่าปริมณฑลตัวแปรจำนวนเต็มซึ่งเก็บค่าของปริมณฑลที่กำหนด
-
ฟังก์ชัน rightTriangles(int p) ใช้ปริมณฑลเป็นอินพุตและส่งกลับจำนวนทั้งหมดของสามเหลี่ยมมุมฉากที่เป็นไปได้
-
จำนวนตัวแปรเก็บจำนวนสามเหลี่ยมมุมฉากที่เป็นไปได้ เริ่มแรก 0
-
ใช้สำหรับการวนรอบเริ่มต้นสำหรับ a=1 ถึง p/2
-
ใช้ nested for loop start อีกครั้งสำหรับ b=a+1 ถึง p/3 (สองด้านไม่เคยเท่ากันในรูปสามเหลี่ยมมุมฉาก)
-
คำนวณ c=p-a-b สำหรับสิ่งนี้ a,b,c ตรวจสอบว่า (a+b>c &&b+c>a &&a+c>b)
-
ตรวจสอบทฤษฎีบทพีทาโกรัสด้วย โดยที่ a*a+b*b==c*c ถ้านับเพิ่มจริง
-
เมื่อสิ้นสุดการนับกลับมีจำนวนสามเหลี่ยมมุมฉากที่เป็นไปได้ในขอบเขตที่กำหนด
-
ผลตอบแทนนับตามผลลัพธ์ที่ต้องการ
หมายเหตุ − เราจะตรวจสอบทฤษฎีบทพีทาโกรัสสำหรับชุดค่าผสม a,b และ c เพียงชุดเดียวเพื่อให้ได้ผลลัพธ์ที่ไม่เหมือนใคร
ตัวอย่าง
#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; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Total number of right triangles that can be formed: 1