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

 

1003번: 피보나치 함수

각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.

www.acmicpc.net

더보기
#include <iostream>
#include <vector>

using namespace std;

struct FIBO {
	int zero, one;
};

int main()
{
	vector<FIBO> arr;
	int tc;
	cin >> tc;
	for (int k = 1; k <= tc; k++) {
		int n;
		cin >> n;
		if (n == 0) {
			cout << "1 0" << endl;
			continue;
		}
		else if (n == 1) {
			cout << "0 1" << endl;
			continue;
		}
		arr.resize(n + 1);
		arr[0] = { 1, 0 };
		arr[1] = { 0 ,1 };
		for (int i = 2; i <= n; i++) {
			arr[i].one = arr[i - 1].one + arr[i - 2].one;
			arr[i].zero = arr[i - 1].zero + arr[i - 2].zero;
		}
		cout << arr[n].zero << " " << arr[n].one << endl;
	}
	return 0;
}