Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จำนวนมุมฉากทึบในวงกลมที่มี k จุดห่างเท่ากันระหว่าง 2 จุดที่กำหนดใน C++

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

จำนวนมุมฉากทึบในวงกลมที่มี k จุดห่างเท่ากันระหว่าง 2 จุดที่กำหนดใน C++

ที่นี่ 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