만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

평범한 서수

면접 대비

시간 제한1초메모리 제한1024 MB

요약
N과 M이 주어질 때, 집합으로 표현한 N을 적는 데 필요한 중괄호와 쉼표의 개수를 M으로 나눈 나머지를 구합니다.
난이도

보통10점 중 5점

유형
수학, 동적 계획법
정답자
아직 제출이 없습니다

문제

집합, 집합, 집합. 수학의 모든 것은 결국 집합이다. 자연수도 집합으로 나타낼 수 있다. 예를 들어 수 00은 공집합 {}\{\}로 나타낸다. 수 11은 {{}}\{\{\}\}로 나타낸다.

그렇다면 22는 어떻게 나타낼까? {{},{{}}}\{\{\},\{\{\}\}\}를 보자. 이것은 공집합과 {{}}\{\{\}\}를 모두 원소로 가지는 집합이다. 이 표현이 22로 좋은 이유는 두 가지다. 첫째, 00과 11은 22의 원소다. 둘째, 00과 11은 22의 부분집합이기도 하다.

일반적으로 N>0N>0이면, 수 NN은 집합 {0,1,…,N−1}\{0,1,\dots,N-1\}로 나타낸다. 이때 0,1,…,N−10,1,\dots,N-1의 표현도 같은 방식으로 재귀적으로 적용한다. 예를 들면 다음과 같다.

3={0,1,2}={{},{0},{0,1}}={{},{{}},{{},{0}}}={{},{{}},{{},{{}}}}\begin{aligned} 3 &= \{0,1,2\} \\ &= \{\{\},\{0\},\{0,1\}\} \\ &= \{\{\},\{\{\}\},\{\{\},\{0\}\}\} \\ &= \{\{\},\{\{\}\},\{\{\},\{\{\}\}\}\} \end{aligned}

따라서 각 0≤i<N0\le i<N에 대해 ii는 NN의 원소이면서 동시에 NN의 부분집합이다. 또 다른 좋은 성질은 NN을 나타내는 집합의 크기도 NN이라는 점이다. 그러나 이런 집합을 적는 데 드는 문자 수는 그리 좋지 않다. 자연수 N≥0N\ge 0이 주어졌을 때, 위 방식으로 NN을 나타내는 집합을 적는 데 중괄호와 쉼표가 몇 개 필요한가?

좀 더 정확히 말하면, f(N)f(N)을 NN을 나타내는 집합을 적는 데 필요한 괄호와 쉼표의 개수라고 하자. f(N)f(N)은 매우 클 수 있으므로, 어떤 양의 정수 MM에 대해 f(N)f(N)을 MM으로 나눈 나머지를 구하라.

입력

입력은 위에서 설명한 두 정수 NN (0≤N<2630\le N<2^{63})과 MM (1≤M<2311\le M<2^{31})이다.

출력

f(N)f(N)을 MM으로 나눈 나머지를 출력한다. 즉, f(N)f(N)을 MM으로 나누었을 때 남는 값이다.

예제4

  1. 예제 1

    입력
    2 100
    
    예상 출력
    9
    
  2. 예제 2

    입력
    3 100
    
    예상 출력
    19
    
  3. 예제 3

    입력
    3 7
    
    예상 출력
    5
    
  4. 예제 4

    입력
    1000000000 1000000007
    
    예상 출력
    851562505