기초 사칙연산 문제긴한데 올리는 이유는 자료형이 표현할 수 있는 범위에 대한 함정이 있기 때문
일단 제 풀이는 아래와 같은데 (검색해보니 풀이 방법은 다양했음)
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char* argv[])
{
double a, b; cin >> a >> b;
cout << fixed;
cout.precision(13);
std::cout << a / b << std::endl;
return 0;
}
문제에서 '첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-9 이하이면 정답이다.'
라는 문구가 있는데 상대오차가 10^-9 이다.
하지만 float은 소주점 이하 정밀도가 6자리 이고 double은 15자리이다. 그런 이유로 double로 자료형을 바꿔주면 된다.
추가) 문제가 조금 잘못된게
두 정수를 입력받으라고 했는데 double로 입력받아도 문제 없이 됨...
그래서 지피티의 도움을 받아서 조금 더 다듬어보자면 아래와 같아지겠다. 위는 백준 돌렸을때 맞았습니다! 떴는데 아래는 안돌려봄
#include <iomanip>
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char* argv[])
{
int a, b; cin >> a >> b;
cout << fixed << std::setprecision(13);
std::cout << static_cast<double>(a)/ b << std::endl;
return 0;
}
'Algorithm > Cpp C#' 카테고리의 다른 글
[Cpp] 백준 3015번 오아시스 재결합 (0) | 2023.09.05 |
---|---|
[Cpp] 백준 1753번 최단 경로 (0) | 2023.08.31 |
[프로그래머스] 크기가 작은 부분 문자열 (0) | 2023.01.01 |
백준[2447/C#] 별 찍기 - 10 (0) | 2021.10.19 |
백준[10870번/C#] 피보나치 수 5 (0) | 2021.10.19 |