본문 바로가기

Programming/알고리즘

[백준 A/B] double 출력 자릿수 문제

반응형

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

 

1008번: A/B

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

www.acmicpc.net

브론즈 문제이지만 이런 문제일 수록 어이없게 틀릴 수가 있다.

 

문제 조건에는 "실제 정답과 출력값의 절대오차 또는 상대오차가 10-9 이하이면 정답이다." 라는 말이 있다.

 

즉, 정답과 상관없이 출력되는 값이 10의-9승 까지는 나오는 것이 오차를 줄일 수 있는 방법이다.

 

문제는 매우 단순하지만 문제의 정답처리 방식때문에 다음과 같이 소스코드를 작성하면 오답이나온다.

 

#include <iostream>

using namespace std;

int main()
{
	double a, b,c;
	scanf("%lf %lf", &a, &b);
	c = a / b;
	printf("%lf", c);
	return 0;
}

 

 

그러나 다음과 같이 "%lf"를 "%0.9lf"로 수정하여 소수점 9번째자리수까지 출력되게 하면 정답이 인정된다.

#include <iostream>

using namespace std;

int main()
{
	double a, b,c;
	scanf("%lf %lf", &a, &b);
	c = a / b;
	printf("%0.9lf", c);
	return 0;
}

 

 

반응형