티스토리 뷰

PS 이야기/PS - BOJ

[BOJ] 1008번 - A/B

whatisyourname 2022. 3. 31. 01:08
반응형

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

 

1008번: A/B

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

www.acmicpc.net

문제

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

입력

첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)

출력

첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-9 이하이면 정답이다.


1. 어떻게 풀까?

1-1) 간단한 나눗셈 문제이네요. 하지만...

C++이 처음이거나 익숙하지 않다면, 나눗셈 연산의 오차를 신경 쓰지 않는 경우가 대다수이다.

사실, 0과 1로만 이루어진 이진법의 세계에서는 실수의 나눗셈을 다룬다는 것이 위험하지만, 이번 문제의 의도는 그런 오차를 저격하지 않고 '사칙연산 구현에 초점을 맞추자' 이기에 별도의 포스팅으로 다루겠다. (커밍쑨)

입력을 실수형으로 받은 다음, 출력 A/B에서 자릿수를 소수점 9자리보다 더 많이 해주면 맞았습니다! 를 받을 수 있다. (사실 오차를 줄여준다기보다, 출력을 조절함으로써 소수점을 어디까지 계산할 것인가를 조절한다.)

2) 최종 코드

1
2
3
4
5
6
7
8
9
10
#include <bits/stdc++.h>
 
int main() {
 
    double A, B;
    scanf("%lf %lf"&A, &B);
    printf("%.13lf", A / B);
 
    return 0;
}
cs

2. FAQ

Q1) float형으로 받으면 안 되나요?

A) 오차범위가 10-9까지 줄일 수 없기 때문에 안된다.

이는 float와 double의 정밀도의 차이에서 기인한다. 구글 검색 : float double precision

(float의 오차범위 : 대략 ~ 10-7, double의 오차 범위 : 대략 ~ 10-15)

 

반응형

'PS 이야기 > PS - BOJ' 카테고리의 다른 글

[BOJ] 1157번 - 단어 공부  (0) 2022.04.01
[BOJ] 1152번 - 단어의 개수  (0) 2022.03.31
[BOJ] 1002번 - 터렛  (0) 2022.03.31
[BOJ] 1001번 - A-B  (0) 2022.03.30
[BOJ] 1000번 - A+B  (0) 2022.03.30
댓글
Total
Today
Yesterday
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
«   2024/05   »
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 29 30 31
글 보관함