본문 바로가기
백준 알고리즘(BOJ)

백준 알고리즘 3053 (택시 기하학) - C++, Python

by Think_why 2019. 10. 16.

[문제] 백준 알고리즘 3053 (택시 기하학)

https://www.acmicpc.net/problem/3053

 

3053번: 택시 기하학

문제 19세기 독일 수학자 헤르만 민코프스키는 비유클리드 기하학 중 택시 기하학을 고안했다. 택시 기하학에서 두 점 T1(x1,y1), T2(x2,y2) 사이의 거리는 다음과 같이 구할 수 있다. D(T1,T2) = |x1-x2| + |y1-y2| 두 점 사이의 거리를 제외한 나머지 정의는 유클리드 기하학에서의 정의와 같다. 따라서 택시 기하학에서 원의 정의는 유클리드 기하학에서 원의 정의와 같다. 원: 평면 상의 어떤 점에서 거리가 일정한 점들의 집합

www.acmicpc.net

 

R을 받아와서 유클리드 기하학과 택시 기하학의 원 넓이를 소수점 6자리까지 출력.

1. 유클리드 기하학 (모양 = 원) : πr^2 = PI * (R ** 2)

2. 택시 기하학 (모양 = 마름모) : 2r^2 = 2 * (R ** 2)

 

C++로 할 때, 선언을 float로 했다가 자릿수가 부족해서 틀렸고,

(R<=10000이면 R^2 <= 100000000 이라서) double로 바꿔서 맞았다.

Python은 그냥 최고.

 

[C++]

#include <iostream>
#define PI 3.14159265358979
using namespace std;

int main() {
	double R;
	cin >> R;
	cout << fixed;
	cout.precision(6);
	cout << R * R * PI << endl;
	cout << R * R * 2 << endl;
	return 0;
}

 

[Python]

import math
R = int(input())
print("{:6f}".format(R**2 * math.pi))
print("{:6f}".format(R**2 * 2))
728x90

댓글