피보나치 수 4

백준 11778번 피보나치 수와 최대공약수

문제 링크입니다: https://www.acmicpc.net/problem/11778 N, M이 매우 크기 때문에 시간복잡도 O(N)으로는 어림도 없는 문제였습니다.https://jaimemin.tistory.com/324?category=987849 이 문제를 보면 행렬의 곱셈을 통해 피보나치 수열을 구할 수 있는 것을 알 수 있습니다.따라서, 분할정복을 이용해 행렬의 N승을 빨리 구하는 것이 핵심이였습니다.이 때, 행렬의 곱셈을 진행할 때, int 범위를 안 벗어나도록 모듈라 연산을 적절히 하는 것 또한 핵심이였습니다. #include using namespace std; const int MOD = 1000000007; //행렬의 성질을 이용하여 피보나치 수열을 구함 class Matrix { in..

알고리즘/BOJ 2019.02.12

백준 2747번 피보나치 수, 2748번 피보나치 수 2

문제 링크입니다: https://www.acmicpc.net/problem/2747백준 알고리즘 사이트 단계별로 풀어보기 항목을 보다가 '피보나치 수' 문제집 옆에 도전 중이라고 쓰여있는 것을 보고 완료하고 싶어서 풀어봤습니다. #include using namespace std; int N; int fibonacci(void) { switch (N) { case 0: //0번째 return 0; case 1: //1번째 return 1; default: //그 이후 int first = 0; int second = 1; int sum; //합 for (int i = 0; i < N - 1; i++) { sum = first + second; first = second; second = sum; } re..

알고리즘/BOJ 2018.02.22