컴공 일기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 0
모집인원 38입니다
-
초->중 올라갈 때 0 0
알게된 여자 애가 있었어 걔가 자기들끼리 얘기할 때 우리 학교(초등)에 저런 애가...
-
설컴 도랐노 0 0
403점은 ㅋㅋㅋㅋ 에라이
-
여기서 얼마나 더 들어온다고
-
아직 인가요 아직 칸수 믿으면 안되는건가요 대형과도 0 0
지금부터도 계속 원서접수 끝나기 전날까지 칸수 2,3칸씩 떨어질까요 그리고 이거...
-
로스쿨진학 0 0
이대다님 만약 로스쿨 생각 있으면 역시 스카이를 가는 게 확실히 도움될까요 정시로...
-
여러분들 그거 알음??? 전봇대에는 항상 전선이 3개 있음 1 0
도시에 있는 전봇대는 무조건 전선이 3개 있음 이게 각 선은 전류가 1/3시간간격씩 늦게 흐름
-
근데 서울대 0 0
50등 이상인 애들 중에 내신 cc 받는 애는 없으려나요? 낙관적으로 생각하면 한...
-
경희대 그만 쳐들어와 ㅅㅂ 0 0
개 터지겟네 하
-
마지막에 몰리는 인원 감안해야해서 전년도 실지원만큼 거의 다 찰 때까진 안 기다려도...
-
이 정도면 표본 거의 확정인가 1 0
더 유입안되면 좋겠음..
-
성대 자과는 너무 쓰기싫어서 0 0
그냥 가군 냥대 낮공 써야겠네
-
영어3등급 2 0
재수 시작할때는 3등급 감점 알빠노 다른곳에서 따서 갚으면돼 였는데 막상 진학사...
-
만나이 몇임? 8 1
-
남은 시기에 유의미하게 많이 들어올 이유가 있나..?
-
24고경의 재림인가 1 0
ㄹㅈㄷㄹㅈㄷ
-
제미나이 뽀뽀 마렵네 4 0
캬
-
컷을 2점이나 내리면 어떡하냐 1 0
ㅆㅂ
-
진짜 신기하다 0 0
컷이 낮아지니까 귀신같이 몰려드네 ㅇㅎ..
-
시발!
-
아니 근데 막 뉴스에서 전국 TOP10 대학 다룰때는 0 1
서연고 서성한 중경외이 까지만 뉴스에서 다루던데 이건 뭔 기준인지 도대체 모르겠음 ㅋㅋ
-
고경이 조음 연경이 조음 16 0
그냥 취향차인가
-
이 두개 차이가 뭔가요?? 0 0
동일과인데 왜 둘이 순위가 다른건가요…
-
결국은 고속밖에 믿을게 없구나 0 0
내라인대에서는
-
지금 낙지 2 0
롤백됏다고? 고쳐짐?
-
MY PLAN 0 0
~12.28 수2 한완수 1회독 완료 12.28~1.4 수1 한완수 1회독 + 기하...
-
어제 9칸이었던 곳 6칸됐네 0 1
근데 어제랑 오늘 둘다 2등임 ㅋㅋㅋ 23명 뽑는데 이게 맞나
-
고경 ㅋㅋㅋㅋㅋ 0 0
다 돌아오겠네 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
-
응씨발롬들아나여기대가리박을거 ㅇㅇ 4칸 5칸 6칸 다 꺼지삼 캬캬 내이야기임
-
흠 2 1
왜 아쉬운지 모르겠군
-
냥터칼 쓰는게 맞나 2 0
이거 걍 밑도 끝도 없이 내려가는데 아무리 추합권이 길다고 해도
-
어느날 컷 떡락하면 사람 개몰려서 다음업뎃때는 널뛰기해서 원상복구 되는거 ㅋㅋㅋ
-
왜 갑자기 네 칸 됨 0 0
안 지르려고 마음 굳혔었는데 이래버리면…
-
서울대 기균 0 0
서울대 기균 이과37중반어디쓸 수 있어욤 ?
-
언어로 탑 먹는 대학이 지는 해 라는게 이해가 안되는 ㅇㅇ
-
AI자전의 정상화 5 0
더올라가야하긴해
-
경희치...ㅋㅋ 0 0
추합 5명 주네요 끄악
-
제발그렇다고해줘요
-
님들같으면 여기 쓰시나요 9 0
10명 뽑는 과에요 작년 경쟁률 3, 오늘자 실지원 53명 중 10등..
-
더 이상 진학사가 큰 의미가 있는지 몰겠다... 1 0
흠... 그냥 마음이 가는 대로 써야 후회 안하겠져?
-
성자과쓰는사람만 2 0
칸수어케됨
-
뭐 내가 고대 최초합권이라고? 3 1
ㅅㅂㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 근데 ㅈㄴ 들어와서 내일 다시 2칸 될 듷
-
손종원 다이어트 어케 했지 2 0
부럽다
-
아 고경 미쳤나 진짜 6 0
;;;
-
나군 다군 추합권 안착 ㄴㅇㅅ 0 0
5칸 추합 드가자 약대의 꿈이 이루어지는구나
-
포기하겠습니다 2 0
경희 낮과 쓰시는분들 홧팅입니다 전 진짜 경희 사학 나갈렵니다 정신병오네 진짜로
-
우예~ 0 0
짭짤해요
-
어제 크리스마스에 잠만잠 0 0
개시발 하타치 인생 언제 나는 여친이 생길까? 근데 예뻐도 여우년이먄 안만날듯 ㅇㅇ...
-
8등됐다 6 0
앵간하면 붙겟군
와 님 오랜만
ㄷㄷ
빅 인티저 문제 맞나 이게
이야 이거 1학년 자료구조 과제였는데