컴공 일기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를 선물하세요.
-
아이패두라는데
-
서버가 좀 이상합니다. 24
가끔씩 좀 이상함...
-
현정훈 토 오전 390번대고 이신혁 토 오후 490번대인데 언제쯤 빠질까요ㅜㅜ...
-
아 ㅅㅂ! 0
스블!
-
ㅈㄱㄴ
-
붕우웅우웅부우우우우웅끼이이이기
-
기본으로 돌아가서...
-
안녕하세요. [Prime] Headmaster입니다. 현재 많은 학생들이 사탐런을...
-
이번주말까지를 3월초라 봐야할텐데... 보통 주말에 올라오니깐 김범준 또 사과문 작성각? ㅋㅋ
-
어떰?
-
하....쯔쯧
-
학교에서 친구들 메가보니까 30일동안 몇 십시간에서 백단위는 기본인데 나만 4시간…...
-
상대방이 누군지도, 어디에 있는지도, 뭐하는지도 잘 알수는 없지만, “수고했다” 이...
-
커피도 괜찮고 그냥 음료, 디저트도 좋아요
-
지인선 10회 2
41분컷 만점 최고기록 달성 ㅎㅎ 22번퀄이 장난 아니네 지금 하루 수학...
-
아 시발 3
실시간 술같이 마시는 05형 소개팅들어옴
-
엄청난 실수거나 엄청난 허수
-
오늘 재밌었다 8
내일 아침에 해장이나 하고 가야지
-
우리 지점은 학생들 실력 평균이 서성한이었어서 나같이 노베들은 공용나가는것도...
-
기코 공통 끝내고 이제 미적분 적분파트만 남았습니다 미분 파트 다 끝내면 한숨...
-
그리고 그건 학벌이 전혀 필요가 없는 것이라면 더 이상 높은 대학을 바랄 필요가 없겠죠..
-
독재 끝나는 시간
-
잇올 끝 6
내 자신 수고했어-~
-
관심 좀 주세요
-
진짜 존재 자체를 혐오스러워하나보다 ㅋㅋㅋㅋ 맞긴 해
-
왜 자꾸 기울기가 아니고 식으로 푸는 게 맞다는 말이 나오는지 모르겠네
-
두줄에 추론하는건 머지..
-
이걸뭐라해야하지..
-
ㅅㅂ
-
그게 나야 바 둠바 두비두밥~ ^^
-
최상위권을 목표로 하니까 요즘 풀다가 그냥 틀리기만 해도 기분 나쁨. 옛날엔 걍...
-
드디어 좀 쉬는구나.. ㅎㅎ 달달하다
-
수능 문제 몇달 멀리하다가 다시 보니까 걍 문제 읽는 것부터가 쉽지 않네요 허허...
-
한의대랑 수의대 동시 졸업 or 수의대에 한방과목이 따로있다
-
그대위판 뜻이 뭐인가요?
-
외로움.. 0
고독은나의친구~
-
대성 패스 고민 0
N수인데 39만원 기본으로 살지 .. 69만원 캐쉬포함으로 살지 고민중입니다 …....
-
너무 많이 자는건가여..
-
ㅈㄱㄴ 이 문제 풀어주실 수 있는 분 있나여...
-
PC방 4
아직도 시간 차감 빠르게 하네 40분 1000원도 많은데 줄어드는 속도는 왜 빠른데
-
넌 해도 안될거라며 무시한 사람 <- 어케 복수하죠 14
안그래도 될지 안될지 불안해 죽겠는데 나에 대해 아는 것도 없는 사람이 갑자기 뒷담까네요...ㅋㅋ
-
07 체대준비하고 있는 현역입니다. 정시로 가고싶어 정시를 준비중인데 국수영 순서로...
-
페이지 넘길때마다 눈치 ㅈㄴ보임
-
이제 기출 다 풀었고 할게없는데 개인적으로 느끼기에 어려운 지문을 스스로 분석할때...
-
홍역과 비타민 3
바이러스성 질환은 세균성 질환과 다른 몇 가지 특징이 있다. 엄밀성을 약간...
-
(Ebsi에서 가져온건데 화질 왜 저럼)각 PAB=A라 하면, 2cosA=r,...
-
술을 못 마시는 게 이정도로 단점일 줄은 몰랏다
-
요새 이거 쓰는 디저트가 많다는데 극혐하는 분들도 꽤 있더라구요....혹시...
-
너 개 못하잖아 1
아.
-
뭐 오르비는 평균이 워낙 높으니까 상관없는 얘길수도 있는데 진짜 이런생각하면...
와 님 오랜만
ㄷㄷ
빅 인티저 문제 맞나 이게
이야 이거 1학년 자료구조 과제였는데