
목차
https://www.acmicpc.net/problem/3053
3053번: 택시 기하학
첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를, 둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다. 정답과의 오차는 0.0001까지 허용한다.
www.acmicpc.net
코드
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double r, u_circle, t_circle;
cin >> r;
u_circle = M_PI * r * r;
t_circle = r * r * 2;
printf("%.6f\n", u_circle);
printf("%.6f", t_circle);
}
설명
생소해 보이는 택시 기하학에서 원의 정의를 이해하면 되는 문제이다.
비유클리드 기하학 - 위키백과, 우리 모두의 백과사전
비유클리드 기하학(non-Euclidean geometry)은 직선 밖의 한 점에서 직선에 평행한 직선을 두 개 이상 그을 수 있는 공간을 대상으로 하는 기하학이다. 유클리드 기하학의 제5공리 "직선 밖의 한 점을
ko.wikipedia.org
문제에 첨부된 위키백과를 참고하면
이 부분이 기술되어있다.
이 점을 참고하면 주어진 r 기준으로 택시 기하학에서의 원은
대각선의 길이가 2*r 인 정사각형의 넓이를 구하면 되는것으로 알 수 있다.
그 경우 정사각형의 넓이는 2*r*r 이므로 이를 출력해주면 된다.
단, 유의할점은 유클리드 기하학에서의 원의 넓이를 구할때는 M_PI를 사용해야하는데
변수를 double로 하지않고 float형으로 할 시 형 변환에서 값의 손실이 발생하여 오답이 발생하므로
반드시 double로 변수를 선언하고 풀어야 하는 문제이다.
'공부 > 백준(C++) - 2022~' 카테고리의 다른 글
백준 10872번: 팩토리얼 [C++] (0) | 2022.01.23 |
---|---|
백준 1002번: 터렛 [C++] (0) | 2022.01.22 |
백준 4153번: 직각삼각형[C++] (0) | 2022.01.20 |
백준 3009번: 네 번째 점[C++] (0) | 2022.01.19 |
백준 1085번: 직사각형에서 탈출[C++] (0) | 2022.01.19 |