ksq111   4년 전

케이스를 확인하는데 어떤부분을 놓쳤는지 잘 모르겠습니다

kyhdudgns113   4년 전

답이 피보나치 수열로 나오는건 아시죠?

근데 이 피보나치 수열이 황금비^n 꼴로 늘어납니다. 즉, 16번째 피보나치 수열은 황금비^16 정도라고 유추할 수 있습니다. (실제로는 차이가 좀 있지만요. 그 차이가 여기서별로 중요하진 않으니 넘어가겠습니다.)

그런데 만약 n 이 90이라면? 황금비를 1.6 이라고 하고 계산하니까 1.08 * 10의 20승 이 나오네요.

int 가 표현할 수 있는 최대의 수가 21억 정도(2^31 - 1)임을 고려하면, 90번째 피보나치수는 그를 훨씬 상회하고도 남네요.

따라서, int 형이 아닌 그것보다 더 큰 정수형인 long long int (아니면 long long) 을 써주서야 합니다.

덩달아서 출력할때도 %d 가 아닌 %lld 를 사용하셔야 하구요.


long long 의 범위가 9.22 * 10 ^ 20  이니까, 90번째 피보나치수보다는 크네요!

ksq111   4년 전

알려주셔서 감사합니다!


lks21c   3년 전

감사합니다. 저도 int를 long으로 바꾸고 해결했습니다.

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