이것저것 잡동사니
[백준 문제] 1008번: A/B 본문
반응형
문제 바로가기 : https://www.acmicpc.net/problem/1008
쉬운 문제인 줄 알았다가 걸려 넘어진 문제다.
문제의 핵심은 오차가 10E-9 이하가 되어야 한다는 것이다.
실수를 사용할 때는 주로 float이나 double을 사용하게 되는데 각각 오차 범위가 10E-7, 10E-15정도라는 소문(?)이 있다. 그러므로 이 문제에서는 double을 사용해야 한다.
출력을 할 때 자리수를 고정하기 위해 다음의 두 줄이 더 필요하다.
std::cout.precision(n);
std::cout << std::fixed;
precision(n)은 실수의 출력 자리수를 지정해준다.
즉, precision(5)를 호출한 뒤 값 12.3456789를 출력하면 다음과 같이 출력된다.
12.345
하지만 우리가 원하는 것은 10E-9이하의 오차이기 때문에 실수 전체 자리수가 아닌 소수점 이하 자리수 고정이 필요하다. 이때 필요한 것이 std::fixed이다. std::cout << std::fixed를 출력 전에 넣어주면 다음과 같이 소수점 이하 5자리를 출력한다.
12.34567
소스 코드
#include <iostream>
using namespace std;
int main(void) {
double a, b;
cin >> a >> b;
cout.precision(12); // 넉넉하게 12자리까지
cout << fixed;
cout << a / b;
return 0;
}
반응형
'컴퓨터공학 > 백준 문제' 카테고리의 다른 글
[백준 문제] 1709번: 타일 위의 원 (0) | 2021.08.08 |
---|---|
[백준 문제] 2004번: 조합 0의 개수 (0) | 2021.08.06 |
[백준 문제] 알고리즘 참고 할 만한 것들 링크 모음 (0) | 2021.08.01 |
[백준 문제] 10951번: A+B - 4 (0) | 2021.07.25 |
[백준 문제] 15552번: 빠른 A+B (0) | 2021.07.18 |
Comments