coding_test/BAEKJOON
백준 2747번 C언어 풀이
CodeJin
2021. 12. 23. 22:26
https://www.acmicpc.net/problem/2747
2747번: 피보나치 수
피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가
www.acmicpc.net

피보나치 수열 기본문제. 숫자가 크지는 않지만, 45에 근접할수록 시간이 꽤 걸리기 때문에 다른 방식으로 풀어보자.
이번 문제는 피보나치 수열의 일반항으로 접근해보았다. 피보나치 수열의 일반항은 다음과 같다.

#include <stdio.h>
#include <math.h>
#define ULL unsigned long long
#define A (1 + sqrt(5)) / 2
#define B (1 - sqrt(5)) / 2
int fibo(int n) {
return (int)(((pow(A, n) - pow(B, n)) / sqrt(5)));
}
int main () {
int n;
scanf("%d", &n);
printf("%d", fibo(n));
}
