seanrocket17   6년 전

n을 이진수로 나타내어 vector v에 저장하고 그 걸 다시 3진법으로 생각하여서 ans을 구했습니다

같은 3의 거듭제곱을 0번, 1번 밖에 못 더하므로 2진법을 나타냈습니다.

제출하면 바로 틀렸다고 나오는데 왜 그럴까요????

simm4256   6년 전

input이 500,000,000,000 이면

output은 1,968,190,469,967,719,331 입니다만

작성자님 소스는 1,968,190,469,967,719,424

를 출력합니다.


원인은 pow 함수입니다. 

pow 함수의 원형을 보시면 아시겠지만 정수의 연산이 아니라 double형 실수의 연산이기 때문에 수가 커질 수록 오차가 생길 수 있습니다.

되도록이면 알고리즘에서는 pow 함수는 지양하시는 게 좋습니다.

곱셈을 사용하는 알고리즘으로 바꿔보세요.

kim27y   2년 전

와 맞네요 warning에서도 double형이라 하는데 이걸 왜 생각못했지

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