반응형
나는 이런 문제 푸는 걸 좋아한다. 물론 기하학을 잘하진 않는다.
< 풀이 >
A를 (0, 0)으로 두자.
우리는 선분AB의 길이(t)를 알고 있으므로 이를 통해 외접원의 반지름을 구할 수 있다. 왜냐하면 삼각형이 정삼각형이므로 정삼각형의 무게중심과 원의 중심이 같기 때문이다.
이를 통해 원의 방정식을 세울 수 있고, 선분 AP의 길이 a를 알고 있으므로 두 식을 연립하면 P의 좌표를 구할 수 있다.
B와 C는 정삼각형의 꼭짓점이므로 좌표를 쉽게 구할 수 있고 이를 통해 그냥 수학 식을 코딩으로 변환만 해주면 된다.
- 다른 풀이 방법
점 P는 항상 점 B와 점 C 사이에 있을 것이므로 이분탐색을 하면서 점 P의 좌표를 구해도 된다고 한다.
< 소스 코드 >
#include <bits/stdc++.h>
using namespace std;
struct pt{
double x;
double y;
pt(double a, double b){
x = a;
y = b;
}
};
int main(){
double a, t;
cin >> a >> t;
double p_y = -sqrt(3)*a*a/(2*t);
double p_x = sqrt(a*a - p_y*p_y);
pt p(p_x, p_y);
pt b(-t/2, -sqrt(3)*t/2);
pt c(t/2, -sqrt(3)*t/2);
double pb = sqrt((p.x-b.x)*(p.x-b.x) + (p.y-b.y)*(p.y-b.y));
double pc = sqrt((p.x-c.x)*(p.x-c.x) + (p.y-c.y)*(p.y-c.y));
printf("%.0lf\n", pb*pc);
}
반응형
'컴퓨터 사이언스 > BOJ' 카테고리의 다른 글
[c++] 백준 #10971 외판원 순회 2 (0) | 2021.01.24 |
---|---|
[c++] 백준 #1339 단어 수학 (0) | 2021.01.15 |
[c++] 백준 #5000 빵정렬 (0) | 2019.11.05 |
[c++] 백준 #3830 교수님은 기다리지 않는다. (0) | 2019.10.14 |
[c++] 백준 #6531 이런 문제는 유치원생도 해결할 수 있어 (0) | 2019.10.13 |
댓글