donghy9508   4년 전

10입력하면 55

20 입력하면 잘나오고

100만입력하면 이상한값이나오네요;;

그래서 int 형에서 longlong int 형으로 바꿔봤는데

그래도

yclock   4년 전

100번째 피보나치 수는 3 * 1020 보다 큽니다.

C언어에서 long long int 형 변수는 대략 4 * 1018 까지 정수를 저장할 수 있습니다.

즉, long long int 형 변수는 100번째 피보나치 수를 표현할 수 없습니다.

yclock   4년 전

궁금증이 해결되셨다면, 우측 상단에 "해결됨으로 바꾸기" 버튼을 눌러주세요.

https://www.acmicpc.net/blog/v...

donghy9508   4년 전

89까지는 제대로 출력되는데; 그렇다면 다른 방법으로 문제 풀어야하나요? long long 보다 더 큰 자료형은없는걸로 알고있는데

isku   4년 전

long long 보다 더큰 자료형은 없습니다.

알고리즘 자체를 바꾸기 이전에 long long보다 큰 숫자를 표현할 방법을 찾아보시는게 좋을 것 같습니다.

JAVA의 경우에는 BigInteger라는 클래스가 Math에 있지만 C나 C++에는 없습니다.

yclock   4년 전

N = A * (1016)2 + B * (1016)1 + C * (1016)0

일 때, 정수 N을 long long 형 하나의 변수로는 나타낼 수 없습니다.

그러나, 1016진법으로 수를 표현하는 느낌으로, long long 형 변수 3개로 표현 가능합니다.


이를 확장하여, long long 형 변수를 여러 개 잡은 배열을 이용하여, 큰 수를 표현 할 수 있습니다.

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