[BOJ] 3053 택시기하학
문제
19세기 독일 수학자 헤르만 민코프스키는 비유클리드 기하학 중 택시 기하학을 고안했다.
택시 기하학에서 두 점 T1(x1,y1), T2(x2,y2) 사이의 거리는 다음과 같이 구할 수 있다.
D(T1,T2) = |x1-x2| + |y1-y2|
두 점 사이의 거리를 제외한 나머지 정의는 유클리드 기하학에서의 정의와 같다.
따라서 택시 기하학에서 원의 정의는 유클리드 기하학에서 원의 정의와 같다.
원: 평면 상의 어떤 점에서 거리가 일정한 점들의 집합
반지름 R이 주어졌을 때, 유클리드 기하학에서 원의 넓이와, 택시 기하학에서 원의 넓이를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 반지름 R이 주어진다. R은 10,000보다 작거나 같은 자연수이다.
출력
첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를, 둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다. 정답과의 오차는 0.0001까지 허용한다.
예제 입력 1
1
예제 출력 1
3.141593 2.000000
제출한 코드
#include <iostream>
#include <cmath>
using namespace std;
int main(){
double n;
cin>>n;
double pi = acos(-1.0);
printf("%.6lf\n%.6lf\n", n*n*pi,n*n*2);
}
| cs |
힌트에 있던 택시 기하학에 대한 위키 설명을 보고 풀 수 있었다. 아직도 저게 뭔지는 잘 이해가 안되지만 택시 기하학(맨하탄 기하학) 에서 원은 45도 기울어진 정사각형이며 한 변은 루트2*r 일 때 반지름 이 r 인 원이 된다는 설명을 보고 넓이는 2*r*r 이겠다는 아이디어만 얻어왔다. 오차범위를 보고 cout대신 printf 를 썼다. PI 값은 내가 정의 했다가, 더 정확한 답을 얻기 위해 acos() 함수를 사용했다. M_PI를 사용하는 것은 오류를 발생하기 쉽다고 저게 가장 정확한 PI 값을 얻어낼 수 있다는 설명을 읽었다. 수학은 참 어렵다 ..
No comments: