เราได้วงกลมที่มีจุด 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