컴공 일기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를 선물하세요.
-
자이 수학 풀려고 하니까 무슨 2007년 2006년에 출제된 문제도 많던데...
-
현 고2고 오늘 입시컨설팅 하시는 지인분이랑 통화했는데 정시로 메디컬을 가려면...
-
둘이 동일인물인게 새삼 개웃기네 ㅋㅋㅋ
-
안녕하세요 06재수생입니다. 생지에서 사탐2개로 사탐런할려고하는데 지구를 좋아했어서...
-
김기현 파데 0
파데는ㄴ 개정판 없는거임?
-
반수하려 했는데 이러면 마음이 흔들리자나...
-
공통: 파운데이션,킥오프,기생집2,3점->아이디어,워크북->수분감->뉴런 확통:...
-
2023 1월 시행 일본 공통테스트 국가별 언어가 제시된 표지판과 주간 왕복 여행객...
-
토트넘 실화냐....
-
오늘부터 갓생이다 감격
-
얼버기 2
그와중에 오르비 리젠 진짜 아프네
-
극복. 6
얼버기
-
뭐 말하다가 망설이다가 몇분뒤에 보러올래? 이러는데 이거 플러팅 맞죠 제발
-
규칙적인 기상 2
굿
-
지금은 일단 혼자하고있고 이번 주말이나 다음주 초에는 집에서 재수 얘기 다시...
-
여드름 = 피지,각질 배출이 안되고 모낭에 쌓이다 굳으면서 볼록 올라온다고로 피지...
-
도대체 언제쯤 없어질까요 군대까지 들고갈듯
-
키배뜨고 왔는데 이타치가 지라이야랑 안싸우고 도망간 이유가 싸우면 지가 썰려서...
-
당근에서 업어왔는데 사고나서 만족도 1위인 가전제품 등극
-
뭐가더중요하다고봄?
-
지금 새벽 3시가 넘었는데...기숙사 앞 노상 때문에 잠을 못 자겠어요 어지간해선...
-
근데 그거 다 하려면..
-
고려대 정시 100전형 경쟁률 더 높아질까요? 제 내신이 서울에 여고 4점대...
-
대학 왓는데 0
엠티 개총 새터 아무곳도 참석 안해서 개찐따됐는데 밥약 기회가 또 언제 있나요 ?...
-
비트겐슈타인의 언어 게임론, 콰인의 전체론을 결합한 로티의 자유주의 해석학 - 수특 독서 적용편 인문·예술 01 0
안녕하세요, 디시 수갤·빡갤 등지에서 활동하는 무명의 국어 강사입니다. 오늘은...
-
이런것도 연고바르면되나
-
문과인데 서울대 0
교과이수기준2 수학 과학으로 채워도 ㄱㅊ나
-
이미지 세젤쉬 거의 다 듣고 있는데 유형 문제집이나 기출 문제집 이런 거 풀어야...
-
몸 보온하기 6
누워있기
-
역시내
-
일단 끌리는 이유 1. 넉넉한 표본과 난이도 2. 만에하나 의대성적이 나온다면...
-
할듯 ㅇ
-
세츠나오 카와시테야이바스리누케 야츠라노 스키오츠케
-
다시 자야겠다
-
고딩때도 친구들이랑 일부러 친해질려고 안했음 그래도 고딩때는 계속 붙어있으니까...
-
친구랑놀면오르비안함
-
사랑이 느껴지는 프레임 수...
-
설경 3
내신 6점대인데 설경이 가고싶어요 가능함??
-
수능 전날 새르비가 더많을듯
-
삼각함수킬러
-
뭔가 멋있어요 이시대 마지막 남은 낭만 느낌
-
그게 가능할 리가 없잖아
-
온세상이 나를 상대로 거짓말 하는 기분이야
-
대화와 타협의 시대를 열어서 통합과 통일을 이루고 영원한 번영의 나라로 가자
-
카투사 0
붙여줘
-
나이로 사수생은 두명 봄
와 님 오랜만
ㄷㄷ
빅 인티저 문제 맞나 이게
이야 이거 1학년 자료구조 과제였는데