피보나치(Fibonacci)

백준 2502번 : 떡 먹는 호랑이

cepiloth 2018. 6. 17. 16:11
반응형

https://www.acmicpc.net/problem/2502


1. 문제 요약

피보나치 응용 문제


2. 알고리즘

피보나치 수열을 구하고 입력 받은 k 의 차이 값을 구한다.


3. 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <sstream>
#include <string>
#include <algorithm>
#include <functional>
#include <vector>
#include <list>
#include <queue>
#include <map>
using namespace std;
 
int main() {
    
    std::ios::sync_with_stdio(false); cin.tie(0);
 
    int fib[31= {0,};
 
    int d, k; cin >> d >> k;
    fib[1]=fib[2= 1;
 
    for(int i=3;i<=d;++i) {
        fib[i] = fib[i-1+ fib[i-2];
    }
 
    int c1 = fib[d-2];
    int c2 = fib[d-1];
    
    for(int i=1;;++i) {
        int a = i;
        if((k-c1*a)%c2)
            continue;
 
        int b = (k-c1*a)/c2;
        
        if(a>b) {
            swap(a,b);
        }
 
        cout << a << "\n";
        cout << b << "\n";
        break;
    }
    return 0;
}
cs

반응형