wowoto9772   3년 전

다음은 AC 받은 cpp 코드 입니다.

wowoto9772   3년 전

다음은 WA받은 자바 코드 입니다.

wowoto9772   3년 전

저는 이 두 코드가 같다고 생각하는데,


왜 WA를 받은 걸까요 ......


납득이 안갑니다 ㅠㅠ

codeonwort   3년 전

1. n = 0에서 35까지 돌려본 결과 C++ 코드와 Java 코드의 출력이 같습니다.

2. 자바 코드를 아래와 같이 고쳐봤는데 런타임 에러가 났습니다. (배열 out of bounds로 추정)

3. 배열 크기를 36을 100으로 바꿨더니 통과하였습니다.

그런데 이 코드는 n = 36에서 오버플로우가 일어나 음수가 출력됩니다. 만약 n >= 36인 데이터가 있다면 오답이 떠야 하는데.. 되게 신비한 현상이네요.

wowoto9772   3년 전

그쵸 ...


저도 씨플플로 낸 코드가 틀렸는데,


혹시나 해서 늘려봤더니 맞더라구요 ...


오버 플로우가 나는 데이터가 있다는 이야긴거같은데.. ㅠ

codeonwort   3년 전

배열 크기가 39 이하면 런타임 에러, 40 이상이면 정상 통과하는 것을 확인했습니다.  BigInteger 배열 크기도 40으로 잡으면 통과하네요.

그런데 왜 배열 크기를 n+1로 잡으면 오답인지 모르겠어요.

codeonwort   3년 전

n > 35인 입력이 있었고, 그 때의 답이 오버플로우가 발생한 값이었습니다.

이 답이 BigInteger를 써서 제대로 계산한 값과 달라서 오답이였던 것으로 밝혀졌습니다.

재채점되서 질문자님 코드도 제 코드도 모두 통과됐네요.. ㅋㅋ

wowoto9772   3년 전

해피엔드!

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