-
백준 5904번 Moo게임PS 2021. 4. 8. 21:25
<접근방법>
어림수로 k의 최댓값은 30이하이다.
3개의 조각( s(k-1), 'moooo...', s(k-1)) 중 하나를 타고 들어간다.
3번째 조각을 타고 들어갈 때, n의 인덱스를 s(k-1)에 맞게 갱신해주어야 한다.
<코드>
#include <iostream> #include <algorithm> #include <string> using namespace std; long long n; long long Size[31]; char S(int k) { if(k == 0){ if (n == 0) return 'm'; else return 'o'; } if (n < Size[k - 1]) { return S(k - 1); } else if (Size[k-1] <= n && n < (Size[k-1] + k + 3)) { if (n == Size[k - 1]) return 'm'; else return 'o'; } else { n -= (Size[k - 1] + k + 3); return S(k-1); } } long long retSize(int k) { if (k == 0) { return Size[k] = 3; } return Size[k] = retSize(k - 1) * 2 + k + 3; } int main() { cin >> n; n--; retSize(30); cout << S(30) << '\n'; return 0; }
반응형'PS' 카테고리의 다른 글
백준 1725번 히스토그램 (0) 2021.04.14 백준 2104번 부분배열 고르기 (0) 2021.04.14 백준 10830번 행렬 제곱 (0) 2021.04.08 백준 20164 홀수 홀릭 호석 (0) 2021.04.08 백준 1780번 종이의 개수 (0) 2021.04.08