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