#문제
#풀이
#include <bits/stdc++.h>
using namespace std;
int main(void){
int a, b;
cin >> a >> b;
cout.precision(10);
cout << (double) a / b;
return 0;
}
앞에 문제 풀다가 뭐가 문제인지 계속 틀렸다. 제목을 보니 앞에 문제들과는 다르게 스페셜 저지 문제였다.
이 문제를 풀면서 부동 소수점이라는 개념을 알게 되었다.
부동소수점 수는 고정된 소수점 숫자와 다르게 소수점의 위치를 바꾸어 표현할 수 있다.
다른 블로그들 보면 엄청 어렵게 설명 되어있는데 간단하게 설명하면
소수점을 어디까지 할지 정하는 것이다.
참고: https://cplusplus.com/reference/ios/ios_base/precision/
cout.precision(10)
precision() 은 출력할때 10자리 숫자를 출력할 수 있도록 한다.
이것을 사용하지 않으면 이렇게 6자리밖에 출력을 안하므로 오차 9자리이하 조건을 확인하지 못하여 틀렸습니다 라고 뜬다.
precision() 을 사용 안했을 때
입력은 정수로 받기에 int로 입력받고 출력을 실수로 출력하도록 하였다.
그리고 출력 부분을 자세히 보면 소수 9자리 이상을 출력해야 정답이라고 적혀있다.
그러므로 float 가 아닌 double을 써야한다.
float : 32비트(4바이트) 자료형이다.
double : 64비트(8바이트) 자료형이다.
double을 쓴다면 16자리 뒤에 숫자들은 쓰레기 값들이 생기 반면
float를 쓰는 순간 7자리 뒤에 숫자들은 쓰레기 값들이 생기는걸 볼 수있다
이렇게 조건 두가지를 만족하면 문제는 정답입니다가 뜨게 된다
'알고리즘' 카테고리의 다른 글
[백준] 10998 - A x B | C++ (0) | 2025.03.01 |
---|---|
[백준] 1001 - A-B | C++ (0) | 2025.03.01 |
[백준] 1000 - A+B | C++ (0) | 2025.03.01 |
[백준] 2557- Hello world | C++ (0) | 2025.03.01 |
C++ 알고리즘 공부 정리 ( 24. 3. 25 ) (0) | 2025.03.01 |