본문 바로가기
반응형

피보나치4

[C/C++] 백준 #2086 피보나치 수의 합(분할정복) 이번 문제는 피보나치 수열들의 합을 계산하는 것입니다. 언뜻, 피보나치 수열을 구해서 그 합을 구해야 할 것으로 생각할 수 있습니다. 수학식을 유도하는 것이 어려워서인지, 문제의 난이도는 Gold I 단계입니다. https://www.acmicpc.net/problem/2086 2086번: 피보나치 수의 합 제 1항과 제 2항을 1이라 하고, 제 3항부터는 앞의 두 항의 합을 취하는 수열을 피보나치(fibonacci) 수열이라고 한다. 예를 들어 제 3항은 2이며, 제 4항은 3이다. 피보나치 수열의 a번째 항부터 b번째 www.acmicpc.net 조금 생각해보면, 이 수열도 피보나치 수열과 다르지 않다는 것을 알 수 있습니다. 수학적으로 점화식을 이용해서 풀이를 하는 것이라서, 다소 생소할 수가 있습.. 2023. 3. 28.
동전을 n번 던졌을 때, 연속으로 앞면이 나타날 경우의 수는? 이런 경우의 수를 계산하는 것이 쉽지는 않습니다. 어떻게 생각을 해야 하는지가 중요하죠. 동전을 n번 던졌을 때의 경우의 총 수는 \(2^n\)입니다. 연속으로 앞면이 나타날 경우의 수는 총 경우의 수에서 연속으로 앞면이 나타나지 않을 경우의 수를 빼면 됩니다. 그러면 연속으로 앞면이 나타나지 않는 경우의 수를 어떻게 계산할까요? 수열을 만드는 과정을 생각해보죠. 동전의 뒷면을 0으로 앞면을 1로 가정을 해보도록 합니다. 4번 동전을 던진다면, 1이 연속으로 나타나는 경우의 수는 0011, 0110, 0111, 1011, 1100, 1101, 1110, 1111 으로 총 8가지입니다. 컴퓨터로 모든 경우의 수에 대해서 연속 1이 나오는지 카운팅하면 되겠지만, 수학적으로는 어떻게 풀까요? 수열을 만들때, .. 2019. 12. 29.
25. 프로젝트 오일러 #25 : 1000자리 피보나치 수열항 구하기 C/C++ 언어를 배우다보면, 꼭 한번은 프로그램해보는 것이 있다면, 피보나치 수열일거라 생각합니다. 피보나치 수열은 재귀함수를 사용한 곳에서도 많이 나오지만, 동적 프로그램이 필요한 예로도 자주 사용됩니다. 피보나치 수열은 한쌍의 토끼의 개체수 증가라는 퀴즈 형태에서 출발한 것인데요. 꼭 토끼가 아니라도 대장균의 증식같은 데에서도 응용할 수 있습니다. 기하함수로 증가하는 곡선을 보이게 됩니다. 피보나치는 아주 간단한 점화식을 이용합니다. 점화식을 보면 아주 간단한 형태입니다. 전항과 전전항을 더한 값이 현재항의 값이 됩니다. 그래서 첫번째 항과 두번째 항이 초기값으로 주어져야 합니다. 첫번째 항은 1, 두번째 항은 1입니다. 자연수 범위안에서 피보나치 수열은 진행합니다. 확장해서 음수항을 만들기도 하지.. 2015. 2. 17.
프로젝트 오일러 #2 피보나치 수열의 짝수항 합 C/C++ 언어를 배우다보면, 꼭 한번은 프로그램해보는 것이 있다면, 피보나치 수열일거라 생각합니다. 피보나치 수열은 재귀함수를 사용한 곳에서도 많이 나오지만, 동적 프로그램이 필요한 예로도 자주 사용됩니다. 피보나치 수열은 한쌍의 토끼의 개체수 증가라는 퀴즈 형태에서 출발한 것인데요. 꼭 토끼가 아니라도 대장균의 증식같은 데에서도 응용할 수 있습니다. 기하함수로 증가하는 곡선을 보이게 됩니다. 피보나치는 아주 간단한 점화식을 이용합니다. \[ F_{n} = F_{n-1} + F_{n-2} \] 점화식을 보면 아주 간단한 형태입니다. 전항과 전전항을 더한 값이 현재항의 값이 됩니다. 그래서 첫번째 항과 두번째 항이 초기값으로 주어져야 합니다. 첫번째 항은 1, 두번째 항은 1입니다. 자연수 범위안에서 피.. 2014. 12. 19.
728x90