PS/백준

[백준/Baekjoon]<1008번> A/B [C/C++/Python][Class 1]

DigIT_JHB 2022. 7. 5. 13:17

문제

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

입력

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

출력

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

예제 입력 1

1 3

예제 출력

0.33333333333333333333333333333333

10-9 이하의 오차를 허용한다는 말은 꼭 소수 9번째 자리까지만 출력하라는 뜻이 아니다.

예제 입력 2

4 5

예제 출력 2

0.8

 

#문제 풀이 방법

이 문제도 기존 1000번, 1001번 문제와 동일하게 구현만 잘해주면 된다.

그런데 주의해야 할 점이 바로 나눗셈 연산이 들어간다는 것이다.

위의 예제와 같이 나눗셈을 할 경우, 완전히 나누어 떨어지지 않는 경우가 존재하기 때문에 문제가 발생할 수 있다. 

 

문제에서 [실제 정답과 출력값의 절대 오차 또는 상대오차가 10-9 이하이면라고 조건을 주었으므로 소수점 자리를 9개 이상 출력하도록 해야할 것이다.

 

따라서

#C#C++는 변수 선언할 때 조심해야 하는데, double로 선언하면 될 것이고,

Python 같은 경우에는 그냥 진행해도 될 것이다.  

 

(*왜 float도 있는데 double을 쓰냐고 물어보면

float의 상대오차는 약 10^-7 정도이고, double의 상대 오차는 약 10^-15 정도라고 한다. 이에 대해서도 나중에 글을 올려봐야할 것 같다.)

(**Python의 경우에는 나누기 연산 시 기본적으로 소수점 16번째자리까지 표현할 수 있다고 한다.)

 

 

 

#C

#include <stdlib.h>
#include <stdio.h>
int main()
{
	double result;
	double a, b;
	scanf("%lf %lf", &a, &b);
	result = a / b;
	printf("%.9lf\n", result);
	return 0;
}

 

#C++

#include <iostream>
using namespace std;
int main() {
    double a,b;
    cin >> a >> b;
    cout.precision(10);
    cout << a / b;
    return 0;
}
#include <iostream>
using namespace std;
int main() {
    double a,b;
    cin >> a >> b;
    cout.precision(9);
    cout<<fixed;
    cout << a / b;
    return 0;
}

또는

 

 

#Python

a, b = map(int, input().split())
print(a / b)
반응형