The Way

다항식 선형 시간에 계산하기 본문

공부/컴퓨터 알고리즘

다항식 선형 시간에 계산하기

Jeonggyun 2017. 10. 30. 16:23

$f(x) = a_0 + a_1 x + a_2 x^2 + ... + a_n x^n$이라는 다항식이 있을 때, 이 값은 선형 시간에 계산할 수 있다.

간단한 변환을 거치면 쉽게 알아차릴 수 있는데,

$f(x) = a_0 + x(a_1 + x(a_2 + ... + x(a_n + 0)))$으로 변환 가능하기 때문이다.


코드는 다음과 같다.

길이 n+1의 배열은 $a_0,\;a_1,\;a_2,...,a_n$이 저장되어있는 배열이라고 하자

int poly(int x, int* arr, int n) { // n은 배열의 길이 (최고차항+1)
	int r = 0;
	for (int i = n; i > 0; --i) {
		r += arr[i];
		r *= x;
	}
	r += arr[0];
	return r;
}


'공부 > 컴퓨터 알고리즘' 카테고리의 다른 글

이항 계수 빠르게 구하기  (2) 2018.06.05
next_permutation 알고리즘  (2) 2018.05.09
마스터 정리  (0) 2017.10.30
거듭제곱(나머지) 계산하기  (1) 2017.10.23
Big-O(빅 오) 표기법: 점근 표기법  (0) 2017.10.20
Comments