เราได้รับวงกลมที่มี K จุดห่างเท่ากันบนเส้นรอบวง นอกจากนี้เรายังได้รับสองจุด A และ B เป้าหมายคือนับจำนวนสามเหลี่ยมที่เป็นไปได้โดยใช้จุดเหล่านี้ ที่มีมุมฉากทึบ ACB (มุมมากกว่า 90 องศา) ภายใน พวกเขา จุด A และ B เป็นอย่างที่ A < B

ที่นี่ 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 มิฉะนั้น ตั้ง count เป็นโค้งเล็กกว่าซึ่งเป็นระยะทางในแง่ของจุด
- รับค่าอินพุตเป็นจำนวนเต็ม k, point_a และ point_b
- ฟังก์ชัน Obtuse_angle_circle(int point_a, int point_b, int k) รับตัวแปรทั้งหมดและคืนค่าจำนวนมุมฉากทึบในวงกลมที่มี 'k' จุดห่างเท่ากันระหว่าง 2 จุดที่กำหนด
- ตั้งค่า count เริ่มต้นเป็น 0
- คำนวณโค้งแรกเป็น arc_1 = (point_b - point_a) - 1 (b > a)
- คำนวณโค้งที่สองเป็น (k - point_b) + (point_a - 1)
- ถ้าทั้งสองโค้งเท่ากัน คืนค่า 0 เพราะไม่มีจุดแบบนี้เป็นไปได้
- ถ้าไม่เท่ากัน อัปเดต count เป็นค่าต่ำสุดของทั้งสอง เพราะจุดทั้งหมดอยู่บนมัน
- คืนค่า count เป็นผลลัพธ์
ตัวอย่างโค้ด
#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 points are: " << 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