문제
풀이
- pair를 이용해서 pair의 first엔 0의 횟수, second엔 1의 횟수를 저장
- 나머지는 피보나치 함수 구현과 같음
#include <iostream>
#include <utility>
using namespace std;
pair<int, int> v[41];
pair<int, int> getCount(int n) {
v[0] = pair<int, int>(1, 0);
v[1] = pair<int, int>(0, 1);
if(n == 0 || n == 1) {
return v[n];
}
if(v[n].first!=0 && v[n].second!=0) return v[n];
else {
v[n] = make_pair(getCount(n-1).first + getCount(n-2).first,
getCount(n-1).second + getCount(n-2).second);
}
return v[n];
}
int main()
{
getCount(40);
int N;
cin>>N;
for(int i=0;i<N;i++) {
int n;
cin>>n;
cout<<v[n].first<<" "<<v[n].second<<"\n";
}
return 0;
}