컴공 일기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
시발
-
아 ㅈ같다 3
라이터 말고 에어팟을 들고왔다
-
공부 잘해야 될 것 같이 생겻다
-
ㅇㅈ반응 2
’그 얼굴로 살 바엔 죽음‘
-
우영호 선생님 올해부터 시대 재종 안 갈 수도 있다는 말 있던 거로 아는데 진짜로 나오셨나요??
-
그럼 어때 나는 기분 좋아
-
손이 아프고 눈이 힘듦
-
진짜 여유없으면 돈버는 의미가 없는데 나는 돈만 죽어라 벌고있기 진짜싫은데 타협점을 찾기가 쉽지않네
-
가지마 0
-
ㅇㅈ반응 3
못생겻다
-
얼굴 비쳐요 드립 12
20살땐 헐어디요진짜요?? 하면서 쪽지보낼정도로 속았는데 지금도 한 5번은 다시...
-
버킷리스트 ㅇㅈ 1
이거 다 해보고 죽을거임
-
상대가 본인한테 연애하게되면 뭐를 제일 하고싶냐고 질문해서 ㅈㄴ 아무생각없이 품에...
-
맞팔 받습니다
-
고대 자연계열은 0
수학이 엄청 중요하죠?!
-
행복 리스트 0
여기있는거 다 사고 죽을거임
-
이제 마지막 목표를 이루러 떠나볼게~~ 그동안 너무 즐거웠당!!! 다들 원하는 바...
-
어릴때 인증 4
ㅇㅇ
-
초안 쓰고 수정하고 하니까 2시간 순삭임 뭐든지 대충 못하는 성격이라 더 빡세다
-
200일스타트. 시작
-
으ㅏ아악 2
아악!!
-
1994년 당뇨병을 연구하던 의사 Marry.m Tai는 구분구적법을 "개발" 해서...
-
ㅇㅈ 반응 2
코가 너무 커요 코가 심상치 않다 코가 대단해요 저는 캐인입니다
-
왤케 마나요?
-
오르비
-
아 생각보다 재밌네 유명한 소설책 또 추천해줄 사람
-
순수하던 시절로 돌아가고싶음 내 자신이 너무 음탕해진 것 같음
-
97년도 개정 교육과정
-
저는 정치인상임 0
정치인되서 오르비 국유화할꺼임 ㅅㄱ
-
음주 ㅇㅈ 2
-
다이소에서 라이트랑 양면테이프 건전지 사서 설치하면 끝임
-
잘자... 2
난 안 자 ㅋㅋ
-
저능 ㅇㅈ 1
사문 기능론 갈등론 상징적 상호작용론 아직도 헷갈림
-
너무 옛날얘기라 울었어
-
오늘은 3단원 죽어도 끝낸다 진짜
-
이거 감동적임 1
함 봐바
-
심지어 편도 1시간 거리잖아 ㅅㅂ아.
-
인증 대기록들 15
1.댓글이 안달림 2.의대가자 3.형이 무료로 괴외해줄게 4.인증 후 4명 팔취...
-
가속도 5로 운동하는 버스 안에서 수평으로 던진 물체의 수평도달 거리와 정지한 버스...
-
지하철 타고 역 3~4개 더 가면 잇다네요
-
현역땐 화생이었는데 사문 세지로 사탐런했어여 공부량 어떤가욤
-
5월 전에는 완강 하셨네 ㅋㅋㅋ
-
황금손 선생님을 모른다고? ㄹㅈㄷ네
-
이해가 안되네
-
뭔가 슬프네 6
전에 자주 봣던 오르비언들 다 안 보임 ㅜㅜ
-
외모말고 다른건 더 폐급이라서
-
이거 거리에 있는 사람들 진짜 고막 찢어지는 거 아닌가요 진짜 개념이 없네 이시간에
와 님 오랜만
ㄷㄷ
빅 인티저 문제 맞나 이게
이야 이거 1학년 자료구조 과제였는데