Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm số góc tù trong một đường tròn có các điểm cách đều 'k' giữa 2 điểm đã cho trong C ++

Ta được một đường tròn với K điểm cách đều nhau trên chu vi của nó. Ngoài ra ta được hai điểm A và B. Mục đích là đếm số tam giác có thể sử dụng các điểm này sao cho chúng có góc tù ACB (góc lớn hơn 90o) bên trong chúng. Các điểm A và B sao cho A

Đếm số góc tù trong một đường tròn có các điểm cách đều  k  giữa 2 điểm đã cho trong C ++

Ở đây K =8, A =2, B =5, đếm điểm =2 (C, C ’) sao cho góc LACB, LAC’B là góc tù.

Hãy cho chúng tôi hiểu với các ví dụ

Đầu vào - k =10, A =2, B =4

Đầu ra - Số góc tù trong hình tròn có chữ 'k' cách đều 2 điểm đã cho là - 1

Giải thích - Điểm sẽ là C =3

Đầu vào - k =12, A =2, B =10

Đầu ra - Số góc tù trong đường tròn có chữ 'k' cách đều 2 điểm đã cho là - 3

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

Có thể thấy rằng nếu cung giữa A và B càng nhỏ thì các điểm sẽ chỉ nằm trên cung đó.

Tính cả hai cung và nếu chúng có độ dài bằng nhau thì không thể có tam giác như vậy, trả về 0. Tập hợp khác tính là cung nhỏ hơn là khoảng cách tính theo điểm.

  • Nhận đầu vào là các số nguyên k, point_a và point_b.

  • Hàm Obtuse_angle_circle (int point_a, int point_b, int k) nhận tất cả các biến và trả về số lượng các góc tù trong một hình tròn với các điểm cách đều nhau giữa 2 điểm đã cho

  • Lấy số lượng ban đầu là 0.

  • Tính cung đầu tiên là cung_1 =(point_b - point_a) - 1. (b> a)

  • Tính cung thứ hai dưới dạng (k - point_b) + (point_a - 1).

  • Nếu cả hai cung đều bằng nhau thì trả về 0 vì không có điểm nào như vậy.

  • Nếu chúng không bằng nhau thì số điểm cập nhật tối thiểu là hai vì tất cả các điểm đều nằm trên đó.

  • Kết quả là số lượt trả lại.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Count of obtuse angles in a circle with ‘k' equidistant points between 2 given points are: 2