ultrawave   8년 전

예제 마지막 케이스인 13 29에서

문제의 출력은 67863915인데

제가 돌리면 67863914로 1이 작게 나오네요

왜 틀린건가요?

dotorya   8년 전

double형 변수는 연산 과정에서 약간의 오차가 있습니다.

답이 작은 경우에는 크게 상관없지만, 답이 이 문제처럼 커질 수 있는 경우에는 오차가 답에 영향을 미칠 수 있습니다.


해결 방법은 두 가지가 있고, 이 문제의 경우는 두 번째 방법을 권장합니다.

1. double형보다 오차가 작은(유효숫자가 많은) long double 자료형을 이용한다.

2. int형 변수만으로 연산을 수행할 수 있는 알고리즘을 사용한다.

ultrawave   8년 전

double에 오차가있다는걸 깜빡했네요!

java의 BigDecimal을 활용해서 해결했습니다. 감사합니다

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