cmath, math.h (feat. 백준 3053 택시 기하학)

2019. 12. 8. 21:21·C/C++

 

1. 용도

상수 PI 3.141593 

제곱(pow), 제곱근(sqrt) 사용

 

2. 예제

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

 

3053번: 택시 기하학

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

www.acmicpc.net

 

3. 문제풀이 개념

'택시 기하학'

https://librewiki.net/wiki/%ED%83%9D%EC%8B%9C_%EA%B8%B0%ED%95%98%ED%95%99

 

택시 기하학

Taxicab Geometry.

librewiki.net

우리가 평소 익숙하게 쓰는 기하학은 유클리드 기하학이고

택시 기하학은 장애물이 있는 도로를 가정해서 

피타고라스의 정리에 의한 대각선 직선거리가 아니라

도로가 존재하는 경유거리의 합이다.

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 << fixed

cout << precison(6) // 소수 6자리 이하까지 표시 (7자리에서 자동 반올림처리)

 

 

 

 

 

cout << precision(6) 적용후

 

cout << fiexed, prescison과

header cmath, math.h는 자주사용되므로 배워두면 좋다.

 

 

p.s. 참고 reference

https://en.cppreference.com/w/cpp/numeric/math/pow

 

std::pow, std::powf, std::powl - cppreference.com

(1) float       pow ( float base, float exp ); float       powf( float base, float exp ); (since C++11) double      pow ( double base, double exp ); (2) (3) long double pow ( long double base, long double exp ); long double powl( long double base, long dou

en.cppreference.com

 

 

저작자표시 (새창열림)

'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
'C/C++' 카테고리의 다른 글
  • [std] Vector
  • C++ Naming Rule (Feat. Google C++ Guide)
  • Copy Constructor
  • character array vs String
M_Falcon
M_Falcon
  • M_Falcon
    Falcon
    M_Falcon
  • 전체
    오늘
    어제
    • 분류 전체보기 (432)
      • Web (16)
        • Nodejs (14)
        • Javascript (23)
        • FrontEnd (4)
      • DataBase (39)
        • Fundamental (1)
        • Redis (4)
        • PostgreSQL (10)
        • NoSQL (4)
        • MySQL (9)
        • MSSQL (3)
        • Error (4)
      • Algorithm (79)
        • Algorithm (문제풀이) (56)
        • Algorithm (이론) (23)
      • JVM (65)
        • Spring (13)
        • JPA (5)
        • Kotlin (13)
        • Java (24)
        • Error (7)
      • 기타 (70)
        • Kafka (3)
        • Kubernetes (3)
        • Docker (13)
        • git (19)
        • 잡동사니 (27)
      • 재테크 (11)
        • 세무 (4)
        • 투자 (3)
        • 보험 (0)
      • BlockChain (2)
        • BitCoin (0)
      • C (32)
        • C (10)
        • C++ (17)
        • Error (3)
      • Low Level (8)
        • OS (3)
        • 시스템 보안 (5)
      • 네트워크 (3)
      • LINUX (30)
        • Linux (26)
        • Error (4)
      • 저작권과 스마트폰의 이해 (0)
      • 생각 뭉치 (6)
      • 궁금증 (2)
      • Private (4)
        • 이직 경험 (0)
        • 꿈을 찾아서 (1)
      • Android (21)
        • OS (4)
  • 블로그 메뉴

    • 홈
    • WEB
    • 알고리즘
    • DataBase
    • Linux
    • Mobile
    • C
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    백준
    database
    algorithm
    JPA
    프로그래머스
    Kotlin
    java
    알고리즘
    PostgreSQL
    Programmers
    android
    ubuntu
    kafka
    docker
    Bitcoin
    linux
    Spring
    Git
    javascript
    C++
  • hELLO· Designed By정상우.v4.10.3
M_Falcon
cmath, math.h (feat. 백준 3053 택시 기하학)
상단으로

티스토리툴바