เราได้วงกลมที่มีจุด K เท่ากันบนเส้นรอบวง นอกจากนี้เรายังได้รับจุด A และ B สองจุด เป้าหมายคือการนับจำนวนสามเหลี่ยมที่เป็นไปได้โดยใช้จุดเหล่านี้เพื่อให้มีมุมป้าน ACB (มุมที่มากกว่า 90o) อยู่ภายใน จุด A และ B เท่ากับ A
ในที่นี้ K=8, A=2, B=5, การนับคะแนน=2 (C,C’) โดยที่มุม LACB, LAC’B จะเป็นมุมป้าน
ให้เราเข้าใจด้วยตัวอย่าง
ป้อนข้อมูล − k=10, A=2, B=4
ผลผลิต − จำนวนมุมป้านในวงกลมที่มีจุดเท่ากัน 'k' ระหว่าง 2 จุดที่กำหนดให้คือ − 1
คำอธิบาย − จุดจะอยู่ที่ C=3
ป้อนข้อมูล − k=12, A=2, B=10
ผลผลิต − จำนวนมุมป้านในวงกลมที่มีจุดเท่ากัน 'k' ระหว่าง 2 จุดที่กำหนดให้คือ − 3
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
จะเห็นได้ว่าถ้าส่วนโค้งที่เล็กกว่าระหว่างจุด A และจุด B จะอยู่บนส่วนโค้งนั้นเท่านั้น
คำนวณส่วนโค้งทั้งสอง และหากมีความยาวเท่ากัน จะไม่มีสามเหลี่ยมดังกล่าว ให้คืนค่า 0 มิฉะนั้น ชุดนั้นจะนับเป็นส่วนโค้งที่เล็กกว่าซึ่งเป็นระยะทางในรูปของจุด
-
รับอินพุตเป็นจำนวนเต็ม k, point_a และ point_b
-
ฟังก์ชัน Obtuse_angle_circle(int point_a, int point_b, int k) รับตัวแปรทั้งหมดและส่งกลับจำนวนมุมป้านในวงกลมที่มีจุดเท่ากัน 'k' ระหว่าง 2 จุดที่กำหนด
-
นับเริ่มต้นเป็น 0
-
คำนวณส่วนโค้งแรกเป็น arc_1 =(point_b - point_a) - 1. (b>a)
-
คำนวณส่วนโค้งที่สองเป็น (k - point_b) + (point_a - 1)
-
หากส่วนโค้งทั้งสองเท่ากัน ให้คืนค่า 0 เนื่องจากไม่มีจุดดังกล่าว
-
หากค่าไม่เท่ากัน ให้นับการอัปเดตเป็นอย่างน้อย 2 เนื่องจากคะแนนทั้งหมดอยู่บนนั้น
-
ผลตอบแทนนับเป็นผลลัพธ์
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; int Obtuse_angle_circle(int point_a, int point_b, int k){ int count = 0; int arc_1 = (point_b - point_a) - 1; int arc_2 = (k - point_b) + (point_a - 1); if (arc_1 == arc_2){ return 0; } count = min(arc_1, arc_2); return count; } int main(){ int k = 10; int point_a= 1; int point_b = 4; cout<<"Count of obtuse angles in a circle with ‘k' equidistant points between 2 given pointsare: "<<Obtuse_angle_circle(point_a, point_b, k); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Count of obtuse angles in a circle with ‘k' equidistant points between 2 given points are: 2