컴공 일기275
게시글 주소: https://orbi.kr/00072352394

교수가 꽤 재미있는 과제를 냈습니다. 피버나치 수열의 1000번째 값을 구하고 싶은데, 보다시피 자리수만 따져 보더라도 200자리가 훌쩍 넘어갑니다. 파이썬은 고민할 필요가 없겠습니다만 C언어에서는 200자리가 넘어가는 정수형을 담을 수 있는 기본 자료형이 존재하지 않습니다. 기껏해야 long long일텐데, 이 마저도 200자리는 커버할 수 없지요.
물론, 라이브러리를 이용하면 이 정도 문제야 간단히 해결할 수 있습니다만
바보가 아닌 교수는 라이브러리를 사용하지 않고, 적합한 코딩을 통해 200자리를 담아낼 수 있는 코드를 작성하라고 하는 겁니다.
방법은 간단합니다. 그냥 합치는 거죠. 기본 타입으로는 200비트를 커버할 수 없으므로, char형 200사이즈 되는 배열 두 개를 만들고,
피버나치 점화식을 돌리면서 이 배열들을 업데이트해주면 됩니다. 기본 정수형이 200비트에 모자라서 생긴 일이니, 충분히 커버할 수 있는 array 자료구조를 이용하면 되는 겁니다.
#include <stdio.h>
#include <string.h>
#define N 209 //The 1000th Fibonacci number has 209 decimal digits.
void print_digits(char d[N])
{
int i = 0;
while(d[i] == 0) i++;
while(i<N)
{
printf("%d", d[i++]);
}
}
void add_digits(char aa[N], char bb[N])
{
int i = 0;
int carry = 0;
int j,s;
while(aa[i] == 0) i++;
for(j=N-1; j>=i-1; j--)
{
if( ( s = carry + aa[j] + bb[j]) > 9)
{
carry = 1;
bb[j] = s-10;
}
else
{
bb[j] = s;
carry = 0;
}
}
}
int main()
{
char aa[N] = {0};
char bb[N] = {0};
char tmp[N] = {0};
bb[N-1] = 1;
for(int i=2; i<=1000; i++)
{
memcpy(tmp, bb, sizeof(bb)); //save bb
add_digits(aa, bb); //update bb
memcpy(aa, tmp, sizeof(tmp)); //update aa
}
print_digits(bb);
}
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
시대 시즌2 0 0
단과 언제부터 어떻게 신청할 수 있나요?
-
대학 교양과목으로 수학 물리학 이런거 들어도 될려나 2 0
수능때 저거 만점받고 들어가서 자신은 있는데 학칙에 딱히 막아놓은거 같진 않고...
-
그냥 잘 지내냐고 물어볼까
-
휴릅 1 2
휴릅
-
하루만 기다리면 수능이에요! 5 2
왜냐면 이제부터 기다림이 24시간이 넘을 때마다대가리를 존나 쎄게 쳐서 제 머릿속을...
-
본가에서 알바하는거랑 대학 기숙사 내려가서 살면서 알바하는거중에 뭐가 나을까요...
-
에리카 어느정도임뇨? 5 1
내가 ㅈㄴ 싫어하는 친구가 갔어서 어느정도인지 물어봄 아 참고로 문과임
-
아까 손잡이 달아놨다고 한거 0 0
오늘 임시치아 떼고 크라운 붙였는데 혀로 만지니까 느껴지네 예상댓글 : 왜 포니테일 얘기 아님
-
얼버기 1 0
-
플러팅이란 ㅁ ㅓㄹ까 0 0
당해봣어야알지 에휴
-
배가 찬건가 안찬건가 0 0
중요한건 지금 가서 바로 자야 충분히 자고 내일 일정도 소화한다는거임(위장에서 하는거 x)
-
시대인재 라이브 교재 0 0
지난 라이브 강의 구매하면 그 강의의 자료나 교재도 받을수있는건가요?
-
현우진은 0 0
15교육과정 수학 상 하는 개념 안잡아주는거? 아님 노베 공통수학 1 2에서 잡아주는건가요?
-
3합5(과탐 2과목 평균) 0 0
고대 약대 논술 3합 5 (과탐 2과목 평균) 인데 최저 충족률 어느정도...
-
투 과탐은 장애인인가요 0 1
현역으로 작수 물1지1 백분위 90 91 떴고 3월부터 학고반수해서 서성한연고 공대...
-
아 제발 광대라도 할테니까 0 0
과팅 나가게 해줘 ㅠㅠ
-
나루토 얘기 좀 해도 되나요 17 0
키배뜨고 왔는데 이타치가 지라이야랑 안싸우고 도망간 이유가 싸우면 지가 썰려서...
-
하지만 허수는 귀여운걸 0 0
-
쿼파치 머그러가는중 0 0
아직 춥구만 으으
와 님 오랜만
ㄷㄷ
빅 인티저 문제 맞나 이게
이야 이거 1학년 자료구조 과제였는데