컴공 일기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
나재犬 재미없어
-
ㅇㅈ 5
집까지 걸어가늦중..
-
절대오지마셈
-
인생의주인공이라 0
이정돈되어야주인공이지 라는걸알아버린순간 엑스트라로서의삶은 이미확정되어버린걸까
-
지인이 미술하다 문과 아무대학이나 노리고 재수중이라 진짜 완전 노베입니다ㅠ 수학은...
-
내가 버틸수있을까
-
힝 ㅠㅠㅠㅠ
-
난 8시인데.
-
메가환급 0
학생증 사본 이거 모바일 학생증으로도 대신 인증가능함??
-
슈진코와다이 0
왓 슈진코와다이
-
바키 ㅅㅂ 트럼프랑 또 만난 게 ㅈㄴ 웃기네 ㅋㅋㅋㅋ 1
이것 일본 국뽕을 넘어선 그 무언가임. 경지를 넘어섰음 ㅋㅋㅋㅋ
-
녹음기엔안담기네드르렁슨드르렁슨쿠르르렁슨하씨발걍비염은민폐가맞음씨발
-
잠이나 자자 2
오늘은 글렀다
-
아니 2학년되니까 여기저기 옮겨다녀야되서 아싸 양극화 심해져요ㅠㅠ
-
기하 특 4
강사 학생 모두가 버림
-
수인 만화 4
왜 현실엔 없음? 이세계 가고 싶다
-
수1 1권은 13-14번급이고 2권 수열은 가야 15번급 나오던데 이게맞나
-
투과목 2컷 정도 목표면 어느 과목이 제일 나을까요? 물1은 2년 정도 계속 해서...
-
목러 점심시간에 0
목동러셀 점심시간에 도대체 밥먹고 다들 어딜 그렇게 옷입고...
-
문학 시간 소요 0
세 복합지문 시간 어느정도 쓸까요 전 비문학보다 오래걸리는데
-
숭컴이 입결 더 낮음 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
-
회전초밥 말고 진짜 비싼 초밥 먹어보고 싶다
-
일 어 나 라 5
-
내 핀트를 전혀 못 잡는 상대는 못 이기겠네요
-
한 지문 하는 데 1시간 반 걸리던 내가 아까 18분만에 문제를 다 풂 물론 선지...
-
그건 나였고...
-
나중에 돈 왕창 벌면 더들리 같은 삶을 살아보고 싶다 1
오래된 생각이다
-
개씨발하
-
시립대인데 안다니는것도 누가보면 이상할수있겠지..
-
다들 꿀잠잡시다 11
-
세번째 수능 준비할때부턴 (학고)반수 추천하시나요? 11
ㅈㄱㄴ
-
히키코모리 생활도 자연히 1년이 넘어가버리고 말하는 법을 까먹어버렸다
-
여긴 개강해도 학교 잘 안가잖아 ㅋ
-
교과서 하나에라도 있으면 교과외라고 말하기 어렵지 않나 10
https://orbi.kr/00072349389/ 이차함수 넓이 공식은 교과내?...
-
기준은 없겠지만 현역 미적 골라서 고득점 하신분들은 언제쯤 개념 듣고 회독하셨음?...
-
어제 자습해도 되냐고 물어봤는데 허락 안해주심 어케 해야되나요? 무시하고 공부하기엔...
-
n축을 왜 씀? 10
난 N축과 함수찣기 둘 다 쓰는데 N축은 함수가 확정되고 그래프를 그리는게 유리하고...
-
방구꼇음
-
나도..
-
카톡한 여자 목록 10
가장 최신부터 엄마 누나 엄마 세컨폰 비올라 레슨쌤 ----- 3월 -----...
-
전기전자쪽 계열 희망하고 1학년때의 빈약한 생기부를 2학년때 채운단 마인드 이렇게...
-
아무도 나를 안찾는 삶 너무너무 행복해
-
재수 성공인가요?
-
u로 치환하던데 한국은 왜 t로 치환하는 걸까
-
후후
-
안과 그날 실수로 예약해서 용혁이한테 짬처리 했다고함
-
모두 잘자요 8
-
우함수 기함수 3
짝함수 홀함수 Even function Odd function 짝/홀이 더 나은 거...
와 님 오랜만
ㄷㄷ
빅 인티저 문제 맞나 이게
이야 이거 1학년 자료구조 과제였는데