백준 알고리즘/Lang-C | C++

[백준/C] 14264번 정육각형과 삼각형

Jongung 2021. 9. 5. 21:02

 

백준 온라인 저지 / 14264번 정육각형과 삼각형

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

 

14264번: 정육각형과 삼각형

첫째 줄에 정육각형 한 변의 길이 L이 주어진다. (1 ≤ L ≤ 1,000,000, L은 정수)

www.acmicpc.net

 

  • 사용언어 : C (C99)
  • 알고리즘 : 수학, 기하학

 

 

C 코드

1. 문제 정리

총 1개의 입력을 받은 후 계산해서 출력하는 문제이다.

삼각비 수학문제인데. 

육각형 내에서 삼각형을(겹치지 않는 대각선) 만든 후
작은 삼각형의 면적을 출력하면 된다.

√3a x (a/2) / 2

라는 공식이 나오게 되는데 다음을 계산하면 

√3/4 * a^2라는 값이 나온다.

루트 계산을 위해서 sqrt 함수를 가져와 문제를 해결 해보았다.

 

2. sqrt?

sqrt란 말 그대로 그냥 루트이다. 
c에서는 math.h 헤더를 포함해야 하고 c++에선 cmath인가? 포함 해야하는 걸로 기억한다.

문제에서 그냥 sqrt를 사용하여 단방에 해결했다.

 

double value = a * a * sqrt(3)/4;

 

요런 식으로 계산하여서 풀었고 출력은 절대/상대 오차는 10-9까지 허용한다 라고 했으니
%.10lf를 사용하여 해결 해주었다.

 

3. 완성 코드

#include <stdio.h>
#include <math.h>

int main()
{
    double a;
    scanf("%lf", &a);
    
    double value = a * a * sqrt(3)/4;
    printf("%.10lf", value);
}