[BOJ] 26518 수열의 극한값(python)

재윤·2022년 12월 28일
0

알고리즘 풀이

목록 보기
6/7

문제

초항 a1a_1, a2a_2가 정해져 있고 ai=bai1+cai2a_i=b \cdot a_{i-1}+c \cdot a_{i-2} (i3i \ge 3)이 성립하는 수열 aa에서, nn이 무한히 증가할 때

anan1\frac{a_n}{a_{n-1}}의 극한을 구하여라.

이 값은 항상 수렴함을 증명할 수 있다.

입력

첫 번째 줄에 정수 bb, cc, a1a_1, a2a_2가 공백으로 구분되어 주어진다. (1b,c,a1,a2109)(1 \leq b, c, a_1, a_2 \leq 10^9)

출력

식의 극한값을 출력한다. 절대/상대 오차는 10610^{-6}까지 허용한다.

풀이

수열의 항과 극한의 관계를 알고 있었으면 무난히 풀리는 문제였다.
limxanan1=α(α>0)\lim_{x \to \infty} \frac{a_n}{a_{n-1}}=\alpha(\alpha>0)라 하면,

limxanan1=limxban1+can2an1=limx(b+can2an1)=b+cα=α\lim_{x \to \infty} \frac{a_n}{a_{n-1}} = \lim_{x \to \infty} \frac{ba_{n-1}+ca_{n-2}}{a_{n-1}} = \lim_{x \to \infty}(b + c\frac{a_{n-2}}{a_{n-1}}) = b+\frac{c}{\alpha} = \alpha

α2bαc=0,α=b+b2+4c2\because \alpha^2-b\alpha-c=0, \alpha=\frac{b+\sqrt{b^2+4c}}{2}

limxanan1=b+b2+4c2\therefore \lim_{x \to \infty} \frac{a_n}{a_{n-1}}=\frac{b+\sqrt{b^2+4c}}{2}

풀다보니 코딩 요소가 하나도 안들어가있었다. 처음에는 직접 일반항을 구해보려 시도하였으나, 식이 더 복잡해지는 바람에 포기했다. 오랜만의 수학문제라 처음에는 헤맸지만 나름 재밌었던 문제였다. (다른풀이방법도 찾아보면 더 재밌을 것 같기도 하다.)

코드

import sys, math

b, c, a1, a2 = map(int, sys.stdin.readline().split())
print((b+math.sqrt(b**2+4*c))/2)

2022 제1회 미적확통컵 이동

profile
Naver Boostcamp AI Tech 3기🎈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ㅤㅤ⠀⠀ㅤㅤㅤㅤㅤㅤㅤㅤ2022 데이터분석 청년수련생

0개의 댓글