컴공 일기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를 선물하세요.
-
자신이 생1 방형구 마스터면 들어오세요 ㅋㅋㅋㅋㅋㅋ 3
제가 방형구 개념을 정리해봤는데.. 한번 확인받고싶어서요. 쪽지로 오픈채팅 링크...
-
자야지 7
수면패턴 되돌리기
-
뉴런 드랍 7
뉴런 너무 볼륨도 크고 어렵기도 해서 프테메테우스 들을려고 하는데 뉴런 수1,2에서...
-
((전 당신의 청춘이랍니다))
-
빵꾸뽕이라 1번 확신하고 "이거 1번이라서 어?어? 하거나 무지성 ㄱㄷ찍 많이...
-
수능수학0타께서 문제 언급도를 올려준 느낌임 심지어 ㄷ도 교과서에서 최대최소가...
-
작년에 D- 200일때 단과째고 놀러간건 기억남
-
맞 팔 구 4
잡담태그잘달아요제발요
-
231114 7
받으면 어디가나요?
-
아 배고파 8
요즘 하루 1식 하니까 이때 쯤 배고프네 아
-
23수능 공통 22틀 기하 26 28 30틀 24수능 공통 22틀 기하 27 29...
-
배부르르다 3
자야겠다 다들 잘 자요
-
잇올에서 대각선애 계속 볼펜 책상에 던지고 책 팍팍 넘기는거 하루종일 신경쓰여서...
-
뉴런 헬프 헬프 헬프 18
점 c가 역함수 관계 어쩌고 하는데 이해를 못하겠어요 어디에 역함수이길래 점c를...
-
ㄹㅇ 분위기좋고 으쌰으쌰하는 좋은커뮤 였는데
-
첼시가 이기면 5위
-
ott 웹툰제외 ㅊㅊ좀 겜ㅊㅊ도 ㄱㄴ
-
김범준 스블 6
뉴런 거의 다 들었는데 수2가 부족한 느낌이라 수2 김범준쌤 스블 들으려하는데...
-
필수구매니까 13주차 부터 번장에 풀리겠지
-
그만큼 정답이 없는 과목이라는 거겠죠
-
딜힐 골드플레 주차완료
-
글쎄
-
왜냐면 이제부터 기다림이 24시간이 넘을 때마다대가리를 존나 쎄게 쳐서 제 머릿속을...
-
완자랑 대충 고2 학평 조금만 하긴 했는데 어떰..? 전에 개념 처음 시작 교재로...
-
후....
-
생명1 선생님 1
만점 목표인데 홍준용쌤 괜찮다는 얘기 있길래... 홍준용쌤 커리 괜찮을까요??...
-
국어영어 그대로 수학 고등수학 수1수2미적기하확통 탐구 17개 전부
-
현재 배성민쌤 빌드업을 다들은 상태입니다 드리블로 가기전에 프로메테우스 하고 들어도 되나요
-
옛날 메가 1타 2
국영수 유대종->김동욱 현우진 조정식 과학 김성재 고석용 박지향 엄영대 지금도 양가원이 유명한가요?
-
미쳐버리겠네
-
상상 이매진 1
주간지만 살수는 없나?
-
이거 두개 하는거 현실에서 걸리면 나락감 대학 초기에 다 친해질때 하다 걸리면 진짜 친구 0명됨
-
오
-
안녕하세요, (닉네임을 어쩌다 이렇게 정했는지는 기억이 잘 안 나지만) 국생국사...
-
기숙vs 독재 0
지금 관리형 독서실 다니면서 월-금: 평균 10시간~11시간 토요일 7시간 일욜...
-
좋은듯요 너무 스킬적이지도 않고 체화도 쉽고 일관적이고 너무 제 취향임 개념에...
-
키가 더 컸으면 얼굴형이 더 좋았으면 얼굴이 더 작았으면 눈이 짝짝이가 아니였으면
-
김태영 홍준용 12
생명 누가 더 나을까요ㅠㅜ 생명과탐김태영홍준용대성메가인강
-
패파 답지보고 혼자공부해도 도움될수 있나요??? 아니면 강의중에 선생님께서...
-
* 자세한 문의는 아래의 링크를 통해 연락 바랍니다....
-
시다단과 풀리면 몇백명이 시대다니면 올해 과탐2 가형으로의 회기 하는거임?
-
아는게 엊다..
-
...?
-
심심하네
-
그 (어그로 죄송합니다.. 요즘에는 어그로 안끌면 댓글도 안달아주시더라구요..)...
-
연상이든 연하든 3
일단 나랑 만나줘
-
이 문제 처음 풀 때도 자랑이랑 겸양이 좀 상충하는 거 같아서 별 생각없이 4번...
-
이번달에 반수 결정하게 되어서 지금 이미지쌤 세젤쉬부터 시작하고 있는데요.. 다음...
-
오도이 골 4
1-0 노팅엄 ㅡㅡ
와 님 오랜만
ㄷㄷ
빅 인티저 문제 맞나 이게
이야 이거 1학년 자료구조 과제였는데