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));
}
'coding_test > BAEKJOON' 카테고리의 다른 글
백준 9471번 C++ 풀이 (0) | 2021.12.24 |
---|---|
백준 2748번 C언어 풀이 (0) | 2021.12.23 |
백준 1003번 C++ 풀이 (0) | 2021.12.22 |
백준 1629번 C언어 풀이 (0) | 2021.12.22 |
백준 1920번 C, C++ 풀이 (0) | 2021.12.07 |