https://www.acmicpc.net/problem/1788
피보나치 수 F(n)에서 n이 음수의 경우에도 값을 구하는 문제이다.
-1부터 F(n)을 구하다 보면 값의 절대값이 대칭이 되는 것을 볼 수 있다.
F(n)이 음수인지, 양수인지, 0인지를 구하고 F(|n|)을 구하면 된다.
#include <stdio.h>
unsigned long long F[1000001] = { 0 ,1 };
int main()
{
int n;
scanf("%d", &n);
if (n < 0)
{
printf("%d\n", n % 2 == 0? -1: 1);
n *= -1;
}
else if (n > 0) printf("1\n");
else printf("0\n");
for (int i = 2; i <= n; i++)
F[i] = F[i - 1] % 1000000000 + F[i - 2] % 1000000000;
printf("%llu", F[n] % 1000000000);
}
'Problem Solving' 카테고리의 다른 글
[BOJ 9095] 1, 2, 3 더하기 (0) | 2020.01.02 |
---|---|
[BOJ 2163] 초콜릿 자르기 (0) | 2020.01.02 |
[BOJ 2407] 조합 (0) | 2020.01.01 |
[BOJ 3054] 피터팬 프레임 (0) | 2019.12.30 |
[BOJ 2960] 에라토스테네스의 체 (0) | 2019.12.30 |