Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

1R/2016 10 12

From ZeroWiki
Revision as of 14:27, 12 October 2016 by 175.124.46.11 (talk) ({CREATE})
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

오늘의 문제

참가자

  • 15이원준

코드

15이원준

#include<iostream>
#include<utility>

using namespace std;

int arr[41][2] = { 0, };

pair<int,int> search(int num){
  if(arr[num][0] + arr[num][1]){
    return make_pair(arr[num][0], arr[num][1]);
  }
  pair<int,int> tmp1 = search(num-1);
  pair<int,int> tmp2 = search(num-2);
  arr[num][0] = tmp1.first + tmp2.first;
  arr[num][1] = tmp1.second + tmp2.second;
  return make_pair(arr[num][0], arr[num][1]);
}

int main(){
  arr[0][0] = arr[1][1] = 1;
  int T;
  cin>>T;
  while(T--){
    int n;
    cin>> n;
    search(n);
    printf("%d %d\n", arr[n][0],arr[n][1]);
  }
}

아이디어

15이원준

  • 결국 각 수에 대한 0과 1이 나타는 수를 피보나치와 같이 더해주면 된다.