컴공 일기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
뛰어내릴게요
-
뉴런 카나토미 1
뉴런 들으면서 기출문제집 병행 중인데 다 끝나고 기출 2회독 한다는 생각으로...
-
11시간 채웠으니 잡니다..
-
나는늙엇어
-
적T=사탐ver 김준 그저 Goat 나말 알면 진짜 얼마나 사기일지 가늠도 안감…
-
4등급정도 되는 학생이라 기출 처음부터 하려고 하는데 그냥 자이스토리같은걸로 하면...
-
. 0
.
-
급식 개노맛이라 한끼는 나가서 먹는데 맛집 넘 많아서 매일 머먹읓지 고민됨 다른애들...
-
아침에 일어나면 양치 왜 함? 아침 먹을 거니까 아침 먹고 하면 되는 거 아님?
-
독서 공부할 때 7
밑줄 안 그으면 약간 모래주머니 훈련처럼 공부할 수 있는데 줄 그으면 읽고 푸는...
-
쪽지 하라고~
-
궁금
-
한 번 맛보니까 고속충전기가 존나 느리게 느껴짐
-
컴공 일기275 4
교수가 꽤 재미있는 과제를 냈습니다. 피버나치 수열의 1000번째 값을 구하고...
-
아아아아아아ㅏ악 6
내일 술마시러 가는데 ㅈㄴ 떨리네 개찐따처럼 있다가 올듯
-
오옹?
-
어제저녁부터 좀 추스르고 그냥 대학 다니려고했는데 강의평 보려고 들어간 에타에서...
-
담배를 너무 만이 펴서 어지러워요
-
메인이 다 의대글 혹은 의대글 저격글이고 암투가 난무하네 요즘 안와봤더니 착한사람들...
-
강민철 환승연애 7
뉴분감 끝내고 바로 대가리 깨지면서 드릴드 박아버릴까
-
대치동 맛집 2
제목 그대로.. 대치동 맛집좀 추천해주세요..
-
술 먹을 사람 13
안암 술 먹을 사람 없냐.. 고학년이라 먹을 사람이 없다..
-
잘자요 1
-
진짜 살빼야지… 18
햄부기 먹다가 거울 보니까 정신이 확 드네… 후
-
진짜 확 써버려?
-
올해 무조건 입시 성불하고 대학가서 행복하게 살 것 수능은 쳐다도보지 말 것
-
그 친구는 명문대생 난 재수생인 상태로..ㅅㅂ
-
서울대 합격 37이라 적혀있던데 지난번 조사때 33명 아니였나? 추가합격된건가 궁금하네
-
(저번에 성별관한 투표를 했었음)
-
공통만 듣긴했는데 너무 좋았어서… 고수탑 공통 난이도는 저한테 풀만한 정도였어요...
-
뭔 죄다 의치대아ㅜㅜㅜ
-
미카사 미코토 2
미사카 아커만
-
언매 커리 질문 1
언매 올해 처음 시작했고 유대종T 언매총론 다들었고 기출은 마더텅말고 원래 유대종T...
-
통합 이후 평가원 최근기출에 딱한문제 나옴 24 9모 30번 도형의 변화율이라는...
-
종류가 엄청 많던데 제가 많이 들어본 건 마더텅밖에 없어서요… 마더텅 3개년 12회...
-
치킨 짤 보고 0
너무 배고파서 저 울고 있어요 책임지세요
-
작년에 엄영대 쌤 듣고 2등급 나왔어요 이번에 엄영대 쌤 들을지 이신혁 쌤 들을지...
-
내 돈 내놔 7
내놔--!!!
-
그냥 일반과처럼 시간표 선착순 수강으로 바꾸면 되지 시발아 ㅋ
-
수2 담주까지 완강 가능할거같음? 적분만 남았짆아;;제발
-
도형 내고 싶으면 삼도적 삼도미로 충분히 대체 가능함... 급수도 급수 단독으로 내는게 맞는거 같고
-
대치 러셀 단과 0
이번에 재종 처음 가보는데 자바관?인가 뭔가 하는거 필수에요??
-
학기중이 되니깐 다들 기가 빨린것인가 나만 그런것인가
-
시간 없는데 저거까지 풀기가 뭐하다
-
가정주부하고 싶다
-
의대증원은 필요없고 핵심은 필의패 시행임.. 지금도 의사 너무 많다 필의패만...
-
특정당해서 탈릅함 22
나중에 다른 계정으로 환생할게요 지금까지조언받아주신분들모두화이팅
와 님 오랜만
ㄷㄷ
빅 인티저 문제 맞나 이게
이야 이거 1학년 자료구조 과제였는데