1. 용도
상수 PI 3.141593
제곱(pow), 제곱근(sqrt) 사용
2. 예제
https://www.acmicpc.net/problem/3053
3. 문제풀이 개념
'택시 기하학'
https://librewiki.net/wiki/%ED%83%9D%EC%8B%9C_%EA%B8%B0%ED%95%98%ED%95%99
우리가 평소 익숙하게 쓰는 기하학은 유클리드 기하학이고
택시 기하학은 장애물이 있는 도로를 가정해서
피타고라스의 정리에 의한 대각선 직선거리가 아니라
도로가 존재하는 경유거리의 합이다.
4. 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#include <iostream>
#include <cmath>
#include <math.h>
#define USE_MATH_DEFINES
using namespace std;
//USE_MATH_DEFINES : cmath에 정의된 심볼릭 상수를 사용하겠다
int main(void)
{
int radius;
double width_Euclid, width_Taxi;
cin >> radius;
width_Euclid = pow((double)radius, (double)2) * M_PI;
width_Taxi = pow((double)radius, (double)2) * (double)1/2 * (double)4;
/*
cout << fixed; // cout의 출력 자리수 고정 알림
cout.precision(6); // 소수점 아래 6자리 고정처리.
// 윗 라인 없을시 소수점 이하 0일경우 정수만 출력됨.
*/
cout << width_Euclid << endl;
cout << width_Taxi << endl;
return 0;
}
|
[구문]
USE_MATH_DEFINES
윗놈이 없으면
이미 정의된
M_PI 3.14159265358979323846 << 요놈을 활용하지 못해서
수동으로
#define M_PI 3.14159265358979323846 라고 적어줘야한다.
[구문]
cout << fixed
cout << precison(6) // 소수 6자리 이하까지 표시 (7자리에서 자동 반올림처리)
cout << fiexed, prescison과
header cmath, math.h는 자주사용되므로 배워두면 좋다.
p.s. 참고 reference
https://en.cppreference.com/w/cpp/numeric/math/pow
'C > C++' 카테고리의 다른 글
[std] Vector (0) | 2020.03.21 |
---|---|
C++ Naming Rule (Feat. Google C++ Guide) (0) | 2020.03.08 |
Copy Constructor (0) | 2019.11.20 |
character array vs String (0) | 2019.11.10 |
[백준 2752] 세 수 정렬하기 (0) | 2019.10.28 |