컴공 일기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를 선물하세요.
-
누가 나 불렀냐 시부랄
-
나도모르게 풀기 싫어짐
-
ㅈㄱㄴ
-
ㄹㅇ
-
이제 ㅂㅂ
-
프사바꿈 0
근데 닉은 안바꿈
-
언매 81 (독서-7 문학-2 언매-10) 간만에 매체 개터짐 기하 96: 22번...
-
오늘은 파스타다~! 아 맞다 4일 뒤에 좋은 날이라던데 흐흐
-
ㅠㅠ
-
대학생 활이 없음
-
내일 인천 대구 왕복부터 좀 많이 에바임
-
고스트 피셜 쇼메는 원래 정상이었는데 본인에게 물들어서 미친사람이 되었다
-
나 특정하는 법 7
대충 신촌이나 송도 도서관에서 하루종일 책 ㅈㄴ 붙들고 있는 사람 찾으면 나임 인사해줘~
-
시대임
-
서바 수능 1
서바랑 강k는 항상 고정1 나왔는데 수능에서 3~4 뜨면 부담감 문제가 큰건가요…?
-
오르비를 들어올 수밖에 없음 ㅇㅇ
-
목마름을 외치다 정도면 10
개유명한 곡 아닌가 2.3억 조회수면 씹덕 아닌듯 ㅇㅇ
-
남자친구도 없음 ㅜㅜ
-
웃겨서 캡쳐해둠 응원한다 얘들아
-
남자동기들은 그래도 아는척은 해주는데 여자동기들은 이제는 아무도 아는척 안해줌 마주쳐도
-
5등급제 기준이라 9등급제였으면 2 중에서 후 정도일텐데 그래도 뭔가 1점대라 기분은 좋네요
-
40은 넘어야 농익은 향이 느껴짐
-
늙기싫다 ㅠ
-
무서운 건 0
여기서 09들도 눈팅하고 있을지 모른다는 거임 ㄷㄷ 07도 틀인 날이 멀지 않았다.
-
진짜 정말 아무것도 모름
-
오르비는 생각이 안 나긴 함
-
아무리봐도 04까진 틀 아님
-
문과 메디컬 3
의예과 제외 약대 치대 한의대 학교 상관없이 21111 국어2컷 사탐 1중간 뜨면...
-
아니엇나 극단적이네요 비관적이네요 이것만 남발하냐 ㅋㅋㅋ
-
보양식으로 미소녀 똥 먹기
-
긍미가 누군데 8
날 팔로우하는거임
-
하..인생 2
생명과학과 취업어떰? 대학원 간다는 전제하에
-
내년에 입학한 신입생 졸업할때쯤엔 한방건보분리 당할수도 있음 ㅇㅇㅇ 그리고 나 치과의사임
-
옯만추하면 이상할거같음 27
오르비에서 원래부터 섹드립치고 그런 사람들은 괜찮을거 같은데 오르비에서 귀여웠던...
-
공적인 상황에서 안 지키는거 내 발작버튼인듯 몰랐는데 존나 화내버렸네..
-
오늘 할일 2
옯만추 상상하기 여르비 ㅇㅈ 저장하기 오르비에 본인 유혹하기 알바 가기
-
소신발언 12
남들도 나만큼 힘들 거라고 본인에겐 본인의 인생이 제일 힘들 거라고 내가 기대는...
-
숙향전에서 하나 가나지문에서 2개인데 둘 다 연계지문 선지판단 못해서 틀렸고 연계...
-
걍 바닥에쌈
-
머리해야하는데 4
비싸
-
이명학커리인데 abps 배워보고 싶어서 키스로직 독해편만 들어보는거 어때요?...
-
그래도 튜링러브는 조회수 1억 넘어서 일본인이라면 다 알줄 알았는데 저번에 회화수업...
-
응디응디 0
응디응디
-
카페인 끊어볼까 8
22예비 22번 풀엇는대 4×8=24라해서 틀림 이것 말고도 오늘 계산실수 좀...
-
sk 본사에서 한 10년 넘게 갈아넣고 이제 텔레콤 갔다는데 텔레콤이 개심각한...
-
중앙대학교 상경계열 재학중입니다.
-
메패 환금 1
언제들어오냐
-
ㅃㄹ
-
고3학교조퇴 2
학교자습보다 잇올가서 공부하고싶은데 어떻게 해야될까요? 전 정시러에요
와 님 오랜만
ㄷㄷ
빅 인티저 문제 맞나 이게
이야 이거 1학년 자료구조 과제였는데