반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

코딩하기 좋은날

백준 1003 피보나치 함수 본문

백준(Baekjoon) 문제

백준 1003 피보나치 함수

huiung 2019. 2. 21. 15:23
반응형

https://www.acmicpc.net/problem/1003

문제와 채점은 위 사이트에서 확인 하실 수 있습니다

 

이 문제는 n번째 피보나치 함수를 구할 때 1번째 피보나치 수와 0번째 피보나치 수가 각각 몇번 나왔는지를 구하는 문제입니다.

 

기본적으로 피보나치 함수를 구할 때 f(n) = f(n-1)+f(n-2) 인 성질을 이용하여 pair를 자료형으로 가지는 벡터를 하나 선언해 first 에는 0의 개수 second에는 1의 개수를 넣어주면서 구해주면 됩니다. 

v[i].first =  v[i-1].first + v[i-2].first, v[i].second = v[i-1].second + v[i-2].second 대략 이런식으로 저장이 되어 n번째 까지 진행을 하면 답을 구할 수 있습니다.

 

다음은 코드입니다.

 

#include <iostream>
#include <vector>
using namespace std;

int main(void) {
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	vector<pair<int, int>> v;
	v.push_back(make_pair(1, 0));
	v.push_back(make_pair(0, 1));
	
	for(int i = 2; i <= 40; i++) {
		v.push_back(make_pair(v[i-1].first + v[i-2].first, v[i-1].second + v[i-2].second));
	}
	int T;
	cin >> T;
	while(T--) {
		int n;
		cin >> n;
		cout<<v[n].first<<' '<<v[n].second<<'\n';	
	}
	
	return 0;
}
반응형

'백준(Baekjoon) 문제' 카테고리의 다른 글

백준 6591 이항 쇼다운  (0) 2019.02.22
백준 1676 팩토리얼 0의 개수  (0) 2019.02.21
백준 1021회전하는 큐  (0) 2019.02.19
백준 5430 AC  (0) 2019.02.19
백준 1916 최소비용 구하기  (0) 2019.02.18