코드
#include <iostream>
using namespace std;
typedef long long ll;
ll a[1000003], n, temp;
int main() {
cin >> n;
temp = n;
n = abs(n);
a[0] = 0;
a[1] = 1;
for(int i = 2; i < n + 1; i++) a[i] = (a[i - 1] + a[i - 2])%1000000000;
if(temp < 0) {
if(n%2 == 1) {
cout << 1 << '\n';
} else {
cout << -1 << '\n';
}
} else if(temp == 0) {
cout << 0 << '\n';
} else if(temp > 0) {
cout << 1 << '\n';
}
cout << a[n] << '\n';
return 0;
}
음수로 피보나치 수를 확장하는 문제이다. 음수일 때는 절대값이 홀수일 때 양수, 짝수일 때 음수가 나온다. 절대값은 피보나치 수와 같이 나오기 때문에 부호만 잘 붙여주면 되는 문제
'백준' 카테고리의 다른 글
[백준] 1647번 도시 분할 계획 C++ 코드 (0) | 2024.07.28 |
---|---|
[백준] 1922번 네트워크 연결 C++ 코드 (0) | 2024.07.28 |
[백준] 14494번 다이나믹이 뭐예요? C++ 코드 (0) | 2024.07.28 |
[백준] 19947번 투자의 귀재 배주형 C++ 코드 (0) | 2024.07.28 |
[백준] 13699번 점화식 C++ 코드 (0) | 2024.07.27 |