NovelAI Diffusion V4 Full プライベートテスト、近日公開 by 不気味の谷
2459 단어
12 분
백준 2775번 C++ 풀이
백준 2775번 문제 c++ 풀이
문제
평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다.
이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다.
아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다.
입력
첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다
출력
각각의 Test case에 대해서 해당 집에 거주민 수를 출력하라.
제한
예제 입력 1
입력:
2
1
3
2
3
출력:
6
10
아이디어
- TMP(템플릿 메타 프로그래밍)을 이용해 컴파일 시간에 모든 가능한 값을 다 계산하고 꺼내 쓴다.
1차 시도
#include <array>#include <iostream>
int K, N, T;
template <int N, int F>constexpr int FiboFunc();
constexpr int returnNumber(int i) { return i; }
template <int T, int F>class Fibo{ public: static constexpr int value = Fibo<T - 1, F>::value + Fibo<T, F - 1>::value;};
template <>class Fibo<1, 0>{ public: static constexpr int value = 1;};
template <int N>class Fibo<N, 0>{ public: static constexpr int value = N;};
template <int F>class Fibo<1, F>{ public: static constexpr int value = 1;};
template <int n, int f>inline constexpr int FiboFunc(){ int result = 0;
if (f == 0 && n == 1) { return Fibo<1, 0>::value; } else if (f == 0 && n == 2) { return Fibo<2, 0>::value; } else if (f == 0) result = n; else
for (int i = n; i <= 1; --i) { result += Fibo<n - i, f - 1>::value; }
Fibo<f, n>::value = result;
return result;}
int main(){ std::cin >> T;
for (int i = 0; i < T; ++i) { std::cin >> K >> N; switch (N) { case 1: switch (K) { case 1: std::cout << Fibo<1, 1>::value << "\n"; break; case 2: std::cout << Fibo<1, 2>::value << "\n"; break; case 3: std::cout << Fibo<1, 3>::value << "\n"; break; case 4: std::cout << Fibo<1, 4>::value << "\n"; break; case 5: std::cout << Fibo<1, 5>::value << "\n"; break; case 6: std::cout << Fibo<1, 6>::value << "\n"; break; case 7: std::cout << Fibo<1, 7>::value << "\n"; break; case 8: std::cout << Fibo<1, 8>::value << "\n"; break; case 9: std::cout << Fibo<1, 9>::value << "\n"; break; case 10: std::cout << Fibo<1, 10>::value << "\n"; break; case 11: std::cout << Fibo<1, 11>::value << "\n"; break; case 12: std::cout << Fibo<1, 12>::value << "\n"; break; case 13: std::cout << Fibo<1, 13>::value << "\n"; break; case 14: std::cout << Fibo<1, 14>::value << "\n"; break; } break; case 2: switch (K) { case 1: std::cout << Fibo<2, 1>::value << "\n"; break; case 2: std::cout << Fibo<2, 2>::value << "\n"; break; case 3: std::cout << Fibo<2, 3>::value << "\n"; break; case 4: std::cout << Fibo<2, 4>::value << "\n"; break; case 5: std::cout << Fibo<2, 5>::value << "\n"; break; case 6: std::cout << Fibo<2, 6>::value << "\n"; break; case 7: std::cout << Fibo<2, 7>::value << "\n"; break; case 8: std::cout << Fibo<2, 8>::value << "\n"; break; case 9: std::cout << Fibo<2, 9>::value << "\n"; break; case 10: std::cout << Fibo<2, 10>::value << "\n"; break; case 11: std::cout << Fibo<2, 11>::value << "\n"; break; case 12: std::cout << Fibo<2, 12>::value << "\n"; break; case 13: std::cout << Fibo<2, 13>::value << "\n"; break; case 14: std::cout << Fibo<2, 14>::value << "\n"; break; } break; case 3: switch (K) { case 1: std::cout << Fibo<3, 1>::value << "\n"; break; case 2: std::cout << Fibo<3, 2>::value << "\n"; break; case 3: std::cout << Fibo<3, 3>::value << "\n"; break; case 4: std::cout << Fibo<3, 4>::value << "\n"; break; case 5: std::cout << Fibo<3, 5>::value << "\n"; break; case 6: std::cout << Fibo<3, 6>::value << "\n"; break; case 7: std::cout << Fibo<3, 7>::value << "\n"; break; case 8: std::cout << Fibo<3, 8>::value << "\n"; break; case 9: std::cout << Fibo<3, 9>::value << "\n"; break; case 10: std::cout << Fibo<3, 10>::value << "\n"; break; case 11: std::cout << Fibo<3, 11>::value << "\n"; break; case 12: std::cout << Fibo<3, 12>::value << "\n"; break; case 13: std::cout << Fibo<3, 13>::value << "\n"; break; case 14: std::cout << Fibo<3, 14>::value << "\n"; break; } break; case 4: switch (K) { case 1: std::cout << Fibo<4, 1>::value << "\n"; break; case 2: std::cout << Fibo<4, 2>::value << "\n"; break; case 3: std::cout << Fibo<4, 3>::value << "\n"; break; case 4: std::cout << Fibo<4, 4>::value << "\n"; break; case 5: std::cout << Fibo<4, 5>::value << "\n"; break; case 6: std::cout << Fibo<4, 6>::value << "\n"; break; case 7: std::cout << Fibo<4, 7>::value << "\n"; break; case 8: std::cout << Fibo<4, 8>::value << "\n"; break; case 9: std::cout << Fibo<4, 9>::value << "\n"; break; case 10: std::cout << Fibo<4, 10>::value << "\n"; break; case 11: std::cout << Fibo<4, 11>::value << "\n"; break; case 12: std::cout << Fibo<4, 12>::value << "\n"; break; case 13: std::cout << Fibo<4, 13>::value << "\n"; break; case 14: std::cout << Fibo<4, 14>::value << "\n"; break; } break; case 5: switch (K) { case 1: std::cout << Fibo<5, 1>::value << "\n"; break; case 2: std::cout << Fibo<5, 2>::value << "\n"; break; case 3: std::cout << Fibo<5, 3>::value << "\n"; break; case 4: std::cout << Fibo<5, 4>::value << "\n"; break; case 5: std::cout << Fibo<5, 5>::value << "\n"; break; case 6: std::cout << Fibo<5, 6>::value << "\n"; break; case 7: std::cout << Fibo<5, 7>::value << "\n"; break; case 8: std::cout << Fibo<5, 8>::value << "\n"; break; case 9: std::cout << Fibo<5, 9>::value << "\n"; break; case 10: std::cout << Fibo<5, 10>::value << "\n"; break; case 11: std::cout << Fibo<5, 11>::value << "\n"; break; case 12: std::cout << Fibo<5, 12>::value << "\n"; break; case 13: std::cout << Fibo<5, 13>::value << "\n"; break; case 14: std::cout << Fibo<5, 14>::value << "\n"; break; } break; case 6: switch (K) { case 1: std::cout << Fibo<6, 1>::value << "\n"; break; case 2: std::cout << Fibo<6, 2>::value << "\n"; break; case 3: std::cout << Fibo<6, 3>::value << "\n"; break; case 4: std::cout << Fibo<6, 4>::value << "\n"; break; case 5: std::cout << Fibo<6, 5>::value << "\n"; break; case 6: std::cout << Fibo<6, 6>::value << "\n"; break; case 7: std::cout << Fibo<6, 7>::value << "\n"; break; case 8: std::cout << Fibo<6, 8>::value << "\n"; break; case 9: std::cout << Fibo<6, 9>::value << "\n"; break; case 10: std::cout << Fibo<6, 10>::value << "\n"; break; case 11: std::cout << Fibo<6, 11>::value << "\n"; break; case 12: std::cout << Fibo<6, 12>::value << "\n"; break; case 13: std::cout << Fibo<6, 13>::value << "\n"; break; case 14: std::cout << Fibo<6, 14>::value << "\n"; break; } break; case 7: switch (K) { case 1: std::cout << Fibo<7, 1>::value << "\n"; break; case 2: std::cout << Fibo<7, 2>::value << "\n"; break; case 3: std::cout << Fibo<7, 3>::value << "\n"; break; case 4: std::cout << Fibo<7, 4>::value << "\n"; break; case 5: std::cout << Fibo<7, 5>::value << "\n"; break; case 6: std::cout << Fibo<7, 6>::value << "\n"; break; case 7: std::cout << Fibo<7, 7>::value << "\n"; break; case 8: std::cout << Fibo<7, 8>::value << "\n"; break; case 9: std::cout << Fibo<7, 9>::value << "\n"; break; case 10: std::cout << Fibo<7, 10>::value << "\n"; break; case 11: std::cout << Fibo<7, 11>::value << "\n"; break; case 12: std::cout << Fibo<7, 12>::value << "\n"; break; case 13: std::cout << Fibo<7, 13>::value << "\n"; break; case 14: std::cout << Fibo<7, 14>::value << "\n"; break; } break; case 8: switch (K) { case 1: std::cout << Fibo<8, 1>::value << "\n"; break; case 2: std::cout << Fibo<8, 2>::value << "\n"; break; case 3: std::cout << Fibo<8, 3>::value << "\n"; break; case 4: std::cout << Fibo<8, 4>::value << "\n"; break; case 5: std::cout << Fibo<8, 5>::value << "\n"; break; case 6: std::cout << Fibo<8, 6>::value << "\n"; break; case 7: std::cout << Fibo<8, 7>::value << "\n"; break; case 8: std::cout << Fibo<8, 8>::value << "\n"; break; case 9: std::cout << Fibo<8, 9>::value << "\n"; break; case 10: std::cout << Fibo<8, 10>::value << "\n"; break; case 11: std::cout << Fibo<8, 11>::value << "\n"; break; case 12: std::cout << Fibo<8, 12>::value << "\n"; break; case 13: std::cout << Fibo<8, 13>::value << "\n"; break; case 14: std::cout << Fibo<8, 14>::value << "\n"; break; } break; case 9: switch (K) { case 1: std::cout << Fibo<9, 1>::value << "\n"; break; case 2: std::cout << Fibo<9, 2>::value << "\n"; break; case 3: std::cout << Fibo<9, 3>::value << "\n"; break; case 4: std::cout << Fibo<9, 4>::value << "\n"; break; case 5: std::cout << Fibo<9, 5>::value << "\n"; break; case 6: std::cout << Fibo<9, 6>::value << "\n"; break; case 7: std::cout << Fibo<9, 7>::value << "\n"; break; case 8: std::cout << Fibo<9, 8>::value << "\n"; break; case 9: std::cout << Fibo<9, 9>::value << "\n"; break; case 10: std::cout << Fibo<9, 10>::value << "\n"; break; case 11: std::cout << Fibo<9, 11>::value << "\n"; break; case 12: std::cout << Fibo<9, 12>::value << "\n"; break; case 13: std::cout << Fibo<9, 13>::value << "\n"; break; case 14: std::cout << Fibo<9, 14>::value << "\n"; break; } break; case 10: switch (K) { case 1: std::cout << Fibo<10, 1>::value << "\n"; break; case 2: std::cout << Fibo<10, 2>::value << "\n"; break; case 3: std::cout << Fibo<10, 3>::value << "\n"; break; case 4: std::cout << Fibo<10, 4>::value << "\n"; break; case 5: std::cout << Fibo<10, 5>::value << "\n"; break; case 6: std::cout << Fibo<10, 6>::value << "\n"; break; case 7: std::cout << Fibo<10, 7>::value << "\n"; break; case 8: std::cout << Fibo<10, 8>::value << "\n"; break; case 9: std::cout << Fibo<10, 9>::value << "\n"; break; case 10: std::cout << Fibo<10, 10>::value << "\n"; break; case 11: std::cout << Fibo<10, 11>::value << "\n"; break; case 12: std::cout << Fibo<10, 12>::value << "\n"; break; case 13: std::cout << Fibo<10, 13>::value << "\n"; break; case 14: std::cout << Fibo<10, 14>::value << "\n"; break; } break; case 11: switch (K) { case 1: std::cout << Fibo<11, 1>::value << "\n"; break; case 2: std::cout << Fibo<11, 2>::value << "\n"; break; case 3: std::cout << Fibo<11, 3>::value << "\n"; break; case 4: std::cout << Fibo<11, 4>::value << "\n"; break; case 5: std::cout << Fibo<11, 5>::value << "\n"; break; case 6: std::cout << Fibo<11, 6>::value << "\n"; break; case 7: std::cout << Fibo<11, 7>::value << "\n"; break; case 8: std::cout << Fibo<11, 8>::value << "\n"; break; case 9: std::cout << Fibo<11, 9>::value << "\n"; break; case 10: std::cout << Fibo<11, 10>::value << "\n"; break; case 11: std::cout << Fibo<11, 11>::value << "\n"; break; case 12: std::cout << Fibo<11, 12>::value << "\n"; break; case 13: std::cout << Fibo<11, 13>::value << "\n"; break; case 14: std::cout << Fibo<11, 14>::value << "\n"; break; } break; case 12: switch (K) { case 1: std::cout << Fibo<12, 1>::value << "\n"; break; case 2: std::cout << Fibo<12, 2>::value << "\n"; break; case 3: std::cout << Fibo<12, 3>::value << "\n"; break; case 4: std::cout << Fibo<12, 4>::value << "\n"; break; case 5: std::cout << Fibo<12, 5>::value << "\n"; break; case 6: std::cout << Fibo<12, 6>::value << "\n"; break; case 7: std::cout << Fibo<12, 7>::value << "\n"; break; case 8: std::cout << Fibo<12, 8>::value << "\n"; break; case 9: std::cout << Fibo<12, 9>::value << "\n"; break; case 10: std::cout << Fibo<12, 10>::value << "\n"; break; case 11: std::cout << Fibo<12, 11>::value << "\n"; break; case 12: std::cout << Fibo<12, 12>::value << "\n"; break; case 13: std::cout << Fibo<12, 13>::value << "\n"; break; case 14: std::cout << Fibo<12, 14>::value << "\n"; break; } break; case 13: switch (K) { case 1: std::cout << Fibo<13, 1>::value << "\n"; break; case 2: std::cout << Fibo<13, 2>::value << "\n"; break; case 3: std::cout << Fibo<13, 3>::value << "\n"; break; case 4: std::cout << Fibo<13, 4>::value << "\n"; break; case 5: std::cout << Fibo<13, 5>::value << "\n"; break; case 6: std::cout << Fibo<13, 6>::value << "\n"; break; case 7: std::cout << Fibo<13, 7>::value << "\n"; break; case 8: std::cout << Fibo<13, 8>::value << "\n"; break; case 9: std::cout << Fibo<13, 9>::value << "\n"; break; case 10: std::cout << Fibo<13, 10>::value << "\n"; break; case 11: std::cout << Fibo<13, 11>::value << "\n"; break; case 12: std::cout << Fibo<13, 12>::value << "\n"; break; case 13: std::cout << Fibo<13, 13>::value << "\n"; break; case 14: std::cout << Fibo<13, 14>::value << "\n"; break; } break; case 14: switch (K) { case 1: std::cout << Fibo<14, 1>::value << "\n"; break; case 2: std::cout << Fibo<14, 2>::value << "\n"; break; case 3: std::cout << Fibo<14, 3>::value << "\n"; break; case 4: std::cout << Fibo<14, 4>::value << "\n"; break; case 5: std::cout << Fibo<14, 5>::value << "\n"; break; case 6: std::cout << Fibo<14, 6>::value << "\n"; break; case 7: std::cout << Fibo<14, 7>::value << "\n"; break; case 8: std::cout << Fibo<14, 8>::value << "\n"; break; case 9: std::cout << Fibo<14, 9>::value << "\n"; break; case 10: std::cout << Fibo<14, 10>::value << "\n"; break; case 11: std::cout << Fibo<14, 11>::value << "\n"; break; case 12: std::cout << Fibo<14, 12>::value << "\n"; break; case 13: std::cout << Fibo<14, 13>::value << "\n"; break; case 14: std::cout << Fibo<14, 14>::value << "\n"; break; } } }}결과맞았습니다!!
깃헙 링크 : link