컴공 일기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를 선물하세요.
-
[남언우 t]기말후 다시시작하기 애매할 때...입니다 4 11
이전에 올린 6월 학평 유사문제와 심화문제 일부 오류들 수정하고 해설까지 붙인...
-
[남언우T] 평가원 분석 A형과 B형 유사문제와 심화문제 34 10
A형과 B형 상대적 고난도문제들에 대한 유사문제입니다 싱크로율 100%는 아니지만...
-
[남언우T] 6월 학평 고난도 문제 해설 (A형 30번, B형 21, 28, 29,30번) 30 8
1. 6월 학평을 치르고 나서 긴장했던 순간이 지나가고 희열에 찬 일부학생이 있는...
-
너무나 뻔한 [ 6평 대세 와 이후의 전략 ] 2 14
입시는 마라톤과 같은 장기승부이므로 무엇보다 자신감이 필요하다. 튼튼한 실력의...
-
[남언우T] 6평대비 무료 모의고사 마지막 회 배포 34 9
안녕하세요. 남언우 입니다.오늘은 6평대비 B형 모의고사 4회 올려드립니다. 마지막...
-
[남언우T] 경찰대 기출분석 무료특강에 대하여.. 4 3
안녕하세요. 남언우T입니다. 이번에는 경찰대 기출분석에 대하여 말씀드려볼까 합니다....
-
[남언우T] 6평대비 모의고사 배포 및 무료해설강의 18 10
안녕하세요.남언우 입니다.오늘은 6평대비 B형 모의고사 3회 올려드립니다.저번에...
-
[남언우 T] [내용추가]6월 학평 대비 모의고사 문과 이과 각 1회 45 19
[추가 내용] 1. 모의고사 해설지 A 형 B형 모두 CLASS 인강페이지에...
-
[남언우T] 6월 평가원 대비 모의고사 무료 배포 및 특강 43 18
부제 : 남언우와 함께하는 전문가들의 수학 세미나안녕하세요. 남언우 입니다.6월...
-
[남언우T] 사관학교 기출에 대하여 23 10
안녕하세요.남언우입니다.우선 오르비에서 진행하고 있는 얼리버드 무료특강 인강을 잘...
-
[남언우T] 수험생 여러분 안녕하십니까? 무료특강 안내 30 19
수험생 여러분 안녕하십니까? 남언우입니다 90년대 중반 강남지역 오프라인 학원에서의...
-
3월 학평에 출제된 문제중 대칭성을 알면 더 간단히 풀수 있는 문제입니다.이 문제...
-
로그함수의 실전 개념 1..밑이 다른 로그함수끼리는 실수배이다 12 12
3월 학평 28번과 평가원 수능문제를 통해 여러분이 잘 알고 있지만 실전에서잘...
-
수능 전과목 만점받기 ...역시 평범속에 진리가 23 40
학원생중 전과목 만점을 받은 학생 인터뷰내용입니다저는 수학을 가르친 샘이고 학원에서...
와 님 오랜만
ㄷㄷ
빅 인티저 문제 맞나 이게
이야 이거 1학년 자료구조 과제였는데