august14   10년 전

이문제 신기한게

cout << setprecision(10) << ans << endl;

으로 출력하면 맞고

printf ("%.9lf\n",ans);

로 출력하면 틀려요 ㅋㅋㅋㅋㅋ
왜그럴까요????

myungwoo   10년 전

데이터 수정이 필요합니다.
기존 문제에서는 유효숫자 10자리 이내로 출력하라는 것 같은데, 바뀐 문제에서는 1e-6내의 오차범위면 됩니다.

대회 데이터 중에 소수점 5째자리까지 밖에 없는 것들도 있습니다.

대회 output 올립니다.

myungwoo   10년 전

39번째 줄과 56번째 줄이 문제가 됩니다.

baekjoon   10년 전

대회 output은 저도 가지고 있기 때문에, 일단 지웠습니다.

확인해본 결과 39, 56번째 줄이 문제가 맞습니다.

baekjoon   10년 전

근데, 왜 이제 setprecision쓰는 소스가 다 틀리게 되는거죠 ㅋㅋㅋ

혹시 C++에 대해서 잘 알아서 답변 달아주실 분 계신가요?

myungwoo   10년 전

저도 잘 아는 것은 아니지만 예상을 하자면,
setprecision 이 유효숫자를 정해놓는거 같아요. 유효숫자를 10으로 정해놓고 정수자리가 5자리 이상 되면 소수를 5자리 이하로 출력하기 때문에 문제가 되는 것 같습니다.
따라서 이 문제에서 setprecision(10)하면 안나오는게 맞지요..

WeissBlume   10년 전

혹시 cout << fixed << setprecision(10) << ans << endl 하면 맞나요?

baekjoon   10년 전

아 setprecision이 유효 숫자였네요. 그럼 myungwoo님이 말한 이유가 맞겠네요. fixed하면 맞을거고요.

댓글을 작성하려면 로그인해야 합니다.