컴공 일기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
캠퍼스의망령 건물엔못드감…
-
박수나 쳐야겟다 3 0
-
1학년이라 성뽕 가득한 상태였고. 성하예프 or 서성한 미만 잡대라고 노래 부르던...
-
기만좀 하겠습니다 1 1
저희 학교 화작 지필 100임뇨 수고 ㅋ
-
질문이 잇음 5 0
?
-
학종충이 인생 망한 썰.txt 13 1
내가 교대 다닐 적의 이야기임. 입학하고 보니 반수해서 온 친구들이 많더라....
-
강아지 첫 산책 2 0
참 궁금한게 많아 우리 애기 ㅎ ㅋㅋㅋ
-
상위 지거국이나 광운대 이상 목표로 공부할려고하는데 수시도 생각이 있어서...
-
아 건물 못들어감 2 0
학생증 아직 없는데 하…
-
고2 내신 수1 함 봐봐 3 2
(삭제) 오
-
경제 해도 되나요 1 0
경제 잘하고 좋아하는데 저보다 잘하는 사람이 너무 많은 것 같아요 근데 문제 푸는...
-
26수능화1만백99기원38일차 0 0
-
군수생 스터디메이트 5 0
군대에서 수능준비중인데 혼자하다보니 게을러지는거같아서 스터디메이트 하실 분...
-
성대 경영 vs 서강대 경영 9 0
신흥 강자 vs 살짝 내려온 전통 강자 느낌이긴한데
-
국어 사설컨 3 1
한수 괜찮나요? 상상은 이미 샀고 이감은 천천히 살까하는데 한수 평이 많이 없어서...
-
n제를 벌써해요!? 4 2
다들 샤인미 물어보시길래 아닛.. 전 기출도 이제 시작했는데...
-
우리학교는 이과생중에 과2 60퍼 사1과1 30퍼 사2 10퍼정도 되는데
-
라프텔을 끊어갈까 9 1
2/4...
-
휴일 뭔데 시간이 이렇게 2 0
잘가냐…. 재종 살이 하다보면 휴일 시간이 뭉개져서 흘러감 운동이나 하러가야집…...
와 님 오랜만
ㄷㄷ
빅 인티저 문제 맞나 이게
이야 이거 1학년 자료구조 과제였는데