컴공 일기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를 선물하세요.
-
차라리 토익 990점 에피가 더 가능성 있겠는데
-
23,24 = 가형 1컷 92 / 22,25 = 가형 1컷 96 0
그냥 대충 이렇게 생각하면 편함요 물론 만점은 가형이 조금 더 어렵고 92,96점은...
-
겨울방학때 간쓸개 학원용이랑 데일리유대종 둘다 풀었단말임 현역이라서 하나만...
-
너무 무리하면 꼭 나중에 지치거든요 쉬어놔야 더 빨리 달릴 수 있어요
-
자기 전 질받 13
선넘질도 ㄱㄱ혓
-
문재인 정부 시절에 보건복지부 장관이 총액계약제 언급했다가 시끄러웠던 적이 있었습니다. 3
https://www.doctorsnews.co.kr/news/articleView....
-
깊생발 쿠데타(?) 10
문득 생각해보니 레전드 하극상
-
공부 ㅈ도 안하는데 항상 90~94점으로 1등급을 유지하는 타고난 능력을 가졌음...
-
수학 27+3마냥 킬러 몇 문제에 그 외에는 전부 쉬운 문제를 박아버리니 언매 기준...
-
유튜브도 이제 다 2배속 해야 편안함
-
ㅇㅇ
-
엔제푸는게 내신대비에 도움이 절대안되려나
-
현재 내 모습 6
-
오노추 10
둠칫둠칫
-
벡터가 젤 버벅임 평균적으로 체감난이도 벡터>>>이차>공도
-
고대 붙으면 조교로 써주신다고 하셨던 그 말씀 아직 기억하고 있습니다 아 그리고...
-
상향평준화로 묻히긴 했어도 19수능이 임팩트는 강했음 3
19수능 당일 네이버 실검 국어 31번으로 도배됐는데 그때 중1이었는데 지금도 기억함
-
현역 화기생지 재수 언기화생 삼수 언기생지 대학 미적 물리 이로써 언매 화작 미적...
-
ㄹㅇ
-
내가 막내얌 우우
-
다시 찜뱃으로 회귀
-
다뒤졌다 다하고잔다…
-
댓글로 자기만 알고있었던 진실을 적어보는 거예요.. 오르비의 누구야 좋아한다 같은
-
23 화1 생1 지1 23 물2 화2 생2 ㅋㅋㅋㅋㅋㅋㅋ
-
8시 30분까지 등원 점심 저녁 1시간 점심 시간 외출가능 학습 시관 관리 빡센편...
-
맞팔할분 2
고고
-
요양 중 4
할머니 댁에서 뒹굴뒹굴 중임뇨 책 들고 왔다가 한 번도 안 봐버림
-
내가 알기로 23수학도 1컷 84-85인걸로 아는데 23수능 1등급 5.3퍼...
-
오르비가 불타겠지? 흐흐
-
몽글몽글, 동롱뇽같은..
-
첨풀때 합성함수 최대최소로 풀었는데 이렇게 부등식으로 풀려면 k>1보장이 안돼서...
-
대충 6-7시간당 준킬-킬러 70문제정도 풀어재껴서 6월까지 버틸려면 n제 많이...
-
국어 기준
-
정시간에 왔는데 1시간 대기 시키고 1시간 기껏 기다려줬는데 면접은 안하고 무작정...
-
걍 국밥 든든하게 먹고 표점도 잘챙기고 시간도 세이브하고
-
이거 빠르게 훑고 갈 수 있나 최대한 이번달 안에 끝내고 담달에 아이디어로 넘어가고...
-
검정치마 6
피와갈증
-
수능 수학은 14
1교시가 어땠느냐에 따라 갈린다
-
성형하고 싶다 0
눈이랑 턱 하고 싶네 짝눈에 사각턱 고치고 싶다 진짜
-
국어 공부 ㅊㅊ 3
강민철T 커리타고 있고, 현강 다니고 있습니다. 고3 돼서야 제대로 국어 공부...
-
왜냐면 현장응시를 25만 했기때문
-
24 25가 아무리 미적 어려웠어도 공통에서 시간세이브하기 너무 나이스했는데
-
다들 매일 아침에 풀고 시작하는거죠?
-
아쉬우면서도(?) 감회가 새로운
-
22는 그놈의 국어여파... 23은 14 15 22번이 그렇게 잘맞는 시험지일 줄이야
-
화2 6
올해 고3이고 의대 지망합니다. 고 1,2모고는 항상 백분위 98~99 정도였고...
-
나더받고싶어…0
-
고1 겨울방학 때부터 디자인과에 지망하기로 마음먹어서 수1부터는 아예 안 하고,...
와 님 오랜만
ㄷㄷ
빅 인티저 문제 맞나 이게
이야 이거 1학년 자료구조 과제였는데