salmon001   4년 전

이곳에 있는 정답 코드와 제 코드의 결과값이 다른 경우를 찾고 싶습니다.

온라인 컴파일러밖에 사용할 수 없는 곳에 있어서 C++로 짠 프로그램의 결과값(정답 코드)과 파이썬으로 짠 프로그램의 결과값(제 코드)을 (많은 데이터에 대하여) 비교하기 어렵습니다.

아니면 정답 파이썬 코드를 올려 주시면 제가 알아서 찾겠습니다.

아래는 제 WA 코드입니다.

salmon001   4년 전

만약 n이 충분히 크면(예 : n = 952523191904958602)

int(n/2) 와 n//2의 결과가 달라집니다.

print(n//2, n/2, type(n/2), int(n/2)) 를 찍어 보면

476261595952479301 4.762615959524793e+17 <class 'float'> 476261595952479296

이렇게 나옵니다.

n/2는 float형으로 변환되는데 이 때 유효 자리는 15자리입니다.

다시 int(n/2) 를 하면 오차가 발생합니다.

따라서 문제의 n 범위를 고려했을 때 n//2를 사용하면 해결할 수 있습니다(자문자답).

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