Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 주어진 2개의 점 사이에 'k'개의 등거리 점이 있는 원의 둔각 수

<시간/>

둘레에 K개의 등거리 점이 있는 원이 주어집니다. 또한 두 점 A와 B가 주어집니다. 목표는 그 안에 둔각 ACB(90o보다 큰 각)를 갖도록 이 점을 사용하여 가능한 삼각형의 수를 계산하는 것입니다. 점 A와 B는 A

C++에서 주어진 2개의 점 사이에  k 개의 등거리 점이 있는 원의 둔각 수

여기서 K=8, A=2, B=5, 각 LACB, LAC'B가 둔각이 되도록 점의 개수=2(C,C')입니다.

예를 들어 이해하자

입력 - k=10, A=2, B=4

출력 − 주어진 2개의 점 사이에 'k'개의 등거리 점이 있는 원에서 둔각의 개수는 − 1

입니다.

설명 − 점은 C=3이 됩니다.

입력 - k=12, A=2, B=10

출력 − 주어진 2개의 점 사이에 'k'개의 등거리 점이 있는 원에서 둔각의 개수는 − 3

입니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

A와 B 사이의 호가 더 작으면 점은 해당 호에만 놓이게 됨을 알 수 있습니다.

두 호를 모두 계산하고 길이가 같으면 삼각형이 불가능하면 0을 반환합니다. 그렇지 않으면 카운트를 점으로 나타낸 거리인 더 작은 호로 설정합니다.

  • 정수 k, point_a 및 point_b로 입력을 받습니다.

  • 함수 Obtuse_angle_circle(int point_a, int point_b, int k)는 모든 변수를 취하고 2개의 주어진 점 사이에 'k'개의 등거리 점이 있는 원의 둔각 수를 반환합니다.

  • 초기 카운트를 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