안녕하세요? 반례 드립니다:
입력: 90 정답: 2880067194370816120 출력: -1581614984
피보나치 수의 90번째 수의 값은 무려 2,880,067,194,370,816,120나 됩니다. int 자료형이 저장할 수 있는 가장 큰 수인 2,147,483,647에 비하면 너무 큰 수입니다. 그렇기 때문에 작성하신 코드에서는 오버플로우, 즉 저장할 수 있는 수의 범위를 초과해 의도했던 것과 다른 수가 저장됩니다.
이를 해결하기 위해서는 더 큰 수를 저장할 수 있는 long long 자료형을 사용하시면 되겠습니다. 출력 시에도 %d를 사용하면 int 자료형의 형태로 출력되어 오버플로우가 또 발생할 수 있으므로, long long 자료형을 출력할 수 있는 %lld 사용을 추천드립니다.
문제가 해결되기를 바랍니다!
ghgh1028 2년 전
답은 맞게 나오는 것 같습니다 어느 부분이 잘못된건가요