본문 바로가기
Algorithm/수학

[백준][1788번][수학] 피보나치 수의 확장

by 우툴 2016. 3. 23.
728x90

피보나치 수의 확장

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

<코드>

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
#include <stdio.h>
 
int main(void){
 
    int num;
    int plusminus = 1;
    long long a=0, b=1, c=1;
    long long result = 0;
    scanf("%d", &num);
 
    if (num < 0){
        if (num % 2 == 0)
            plusminus = -1;
        num = -num;
    }
    if (num == 0)
        plusminus = 0;
 
    for (int i = 0; i < num; i++)
    {
        if (i == 0)
            result = 0;
        if (i == 1)
            result = 1;
        else {
            c = (a + b) % 1000000000;
            a = b;
            b = c;
            result = c ;
        }
    }
 
    printf("%d\n%lld\n", plusminus, result);
 
        
 
 
    return 0;
}
cs

<문제를 푼 방법>

 1. 양수의 피보나치는 전부다 구해서 나오지만 음수의 피보나치가 문제이다.

 2. 하지만 음수의 피보나치를 손으로 직접 적어서 구하다보면 양수의 피보나치와 뭔가 대칭인게 보인다.

 3. 음수의 피보나치에서는 0을 기준으로 양수와 대칭이지만 음수이면서 짝수일때만 음수로 나온다.

728x90

댓글