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
'Algorithm > 수학' 카테고리의 다른 글
[백준][1978번][수학] 소수찾기 (0) | 2016.03.27 |
---|---|
[백준][1446번][수학] 지름길 (0) | 2016.03.23 |
[백준][1735번][유클리드 호제법] 분수 합 (0) | 2016.03.23 |
[백준][1790번][수학] 수 이어 쓰기 2 (2) | 2016.03.22 |
[백준][1057번][수학] 토너먼트 문제 (0) | 2016.03.22 |
댓글