입력이 1,000,000,000,000,000,000으로 말도 안되게 큰 수!
방법을 모르겠어서 도움을 받았다.
피보나치 수를 mod한 수들은 일정한 주기가 있다!
입력에 따라 주기가 다른데 1,000,000,000,000,000,000의 주기를 찾아보면 1,500,000이다.
int fibonacci(long long n) { vector<int> Fib; Fib.push_back(0); Fib.push_back(1); if(n >= 1500000) n %= 1500000; for (int i = 2; i <= n; i++) Fib.push_back((Fib[i - 2]%1000000 + Fib[i - 1]%1000000)%1000000); return Fib[n]; }
<소스 코드>
*Source of the problem = https://www.acmicpc.net/problem/2749
*문제 출처 : BAEKJOON ONLINE JUDGE
댓글
댓글 쓰기