잡다한 시도/코테 준비는 하는거니?

[BOJ] 1008번: A/B

GGOBOOGI 2019. 10. 12. 17:36
반응형

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

 

1008번: A/B

두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net


1차시도 - 틀렸습니다

#include <iostream>
using namespace std;

int main()
{
    int a, b;
    cin >> a >> b;

    cout << double(a) / b;
}

[틀린 이유]

문제에서 '실제 정답과 출력값의 절대오차 또는 상대오차가 10-9 이하이면 정답이다' 라고 하였으나, 개무시했음 ^^

double 자료형은 소수점 이하 6자리까지만 나오기 때문에 상대 오차가 10-9 를 넘을 수도 있음

 


2차 시도- 맞았습니다

#include <iostream>
using namespace std;

int main()
{
    long double a, b;
    cin >> a >> b;

    cout << fixed;
    cout.precision(9);
    cout << double(a) / b;
}

그냥 cout.precision(int)를 하면 전체 자리수가 그 자리수로 고정된다. 이 말인 즉슨 소수점 이하 자리수 뿐만 아니라 소수점 위(?) 자리수도 저 자리수에 포함이 된다는 뜻이다.

 

소수점 자리수에 국한해서 자릿수를 제한하기 위해서는 위의 코드와 같이  cout << fixed; 이후에 cout.precision(int)를 사용해야 한다.

반응형