Recent Posts
Recent Comments
Archives
Today
Total
05-21 00:42
관리 메뉴

이것저것 잡동사니

[백준 문제] 1008번: A/B 본문

컴퓨터공학/백준 문제

[백준 문제] 1008번: A/B

Park Siyoung 2021. 7. 18. 11:31
반응형

문제 바로가기 : https://www.acmicpc.net/problem/1008

 

 

쉬운 문제인 줄 알았다가 걸려 넘어진 문제다.

문제의 핵심은 오차가 10E-9 이하가 되어야 한다는 것이다.

 

실수를 사용할 때는 주로 float이나 double을 사용하게 되는데 각각 오차 범위가 10E-7, 10E-15정도라는 소문(?)이 있다. 그러므로 이 문제에서는 double을 사용해야 한다.

 

출력을 할 때 자리수를 고정하기 위해 다음의 두 줄이 더 필요하다.

std::cout.precision(n);
std::cout << std::fixed;

precision(n)은 실수의 출력 자리수를 지정해준다.

즉, precision(5)를 호출한 뒤 값 12.3456789를 출력하면 다음과 같이 출력된다.

12.345

하지만 우리가 원하는 것은 10E-9이하의 오차이기 때문에 실수 전체 자리수가 아닌 소수점 이하 자리수 고정이 필요하다. 이때 필요한 것이 std::fixed이다. std::cout << std::fixed를 출력 전에 넣어주면 다음과 같이 소수점 이하 5자리를 출력한다.

12.34567

소스 코드

#include <iostream>

using namespace std;

int main(void) {
    double a, b;
    cin >> a >> b;
    
    cout.precision(12); // 넉넉하게 12자리까지
    cout << fixed;
    cout << a / b;
    
    return 0;
}
반응형
Comments