Like a Star

백준 1008번 A/B 본문

PL/C++

백준 1008번 A/B

junmosdata 2022. 7. 4. 14:01

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

 

1008번: A/B

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

www.acmicpc.net

 

 

 

정수인 A, B를 입력하고 A/B를 출력하는 문제.

실제 정답과 절대오차 또는 상대오차가 10-9 이하여야 한다는 조건이 붙어있다.

 

처음 작성한 코딩은 다음과 같다.

#include <iostream>
using namespace std;

int main()
{
    float A, B;
    
    cin >> A >> B;
    cout << A/B;
    
    return 0;
}
 

결과는 오답.

정답은 다음과 같다.

#include <iostream>
using namespace std;

int main()
{
    double A, B;
    
    cin >> A >> B;
    cout.precision(20);
    cout << A/B;
    
    return 0;
}
 

오답의 요인 첫번째는 변수형.

실제 정답과 오차가 10-9 이하가 조건이였기 때문에 약 10-7 오차 범위를 가지는 float은 적절하지 못한 변수형이였다. 따라서 float 대신 double을 사용해주어야 한다.

참고로 double는 범위 오차가 약 10-15 이라고 알려져 있다.

 

오답의 두번째 요인은 출력이였는데 첫번째 코드처럼 코딩하고 출력하면 소수점이 여섯자리까지밖에 출력되지 않는다. 따라서 cout.precision(n) 을 사용해 주어야 한다.

cout.precision(n) 은 실수를 n자리까지 표현해준다. '소수점'을 n자리까지 출력해주는 것이 아니라 '실수 전체' 범위라는 것을 유념해서 n은 여유있게 설정해 주었다.

 

 

'PL > C++' 카테고리의 다른 글

백준 2884번 알람 시계  (0) 2022.07.04
백준 2588번 곱셈  (0) 2022.07.04
백준 10171번 고양이  (0) 2022.07.04
Comments