만드는 중입니다

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

수열 세기

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

요약
양의 정수로 이루어지고 인접한 원소의 차가 1이며 합이 n인 수열을 셉니다. 각 수열에 내려가는 위치 수만큼 c를 거듭제곱해 곱하고, 그 합을 998244353으로 나눈 나머지를 구합니다.
난이도

어려움10점 중 8점

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

문제

정수 nn과 cc가 주어진다.

수열 a1,a2,…,ama_1, a_2, \ldots, a_m이 다음 조건을 모두 만족하면 좋은 수열이라고 한다.

  • 모든 1≤i≤m1 \leq i \leq m에 대해 ai>0a_i > 0이다.
  • 모든 1≤i≤m−11 \leq i \leq m-1에 대해 ∣ai+1−ai∣=1|a_{i+1}-a_i|=1이다.
  • ∑i=1mai=n\sum_{i=1}^m a_i=n이다.

좋은 수열 a1,a2,…,ama_1, a_2, \ldots, a_m에 대해

f(a)=∑i=1m−1[ai>ai+1]f(a) = \sum_{i=1}^{m-1} [a_i > a_{i+1}]

로 정의한다. 즉 f(a)f(a)는 1≤i≤m−11 \leq i \leq m-1 중에서 ai>ai+1a_i > a_{i+1}을 만족하는 ii의 개수이다. 수열 aa의 가중치는 cf(a)c^{f(a)}이다.

모든 좋은 수열의 가중치 합을 998244353으로 나눈 나머지를 구하라.

입력

첫 번째 줄에 두 정수 nn과 cc가 주어진다 (1≤n≤3⋅1051 \le n \le 3 \cdot 10^5, 0≤c<9982443530 \leq c < 998244353).

출력

답을 998244353으로 나눈 나머지를 출력한다.

힌트

첫 번째 예제에서 좋은 수열은 모두 다음과 같다.

aaf(a)f(a)cf(a)c^{f(a)}
[5][5]0011
[2,3][2, 3]0011
[3,2][3, 2]1133
[2,1,2][2, 1, 2]1133

따라서 답은 1+1+3+3=81 + 1 + 3 + 3 = 8이다.

예제3

  1. 예제 1

    입력
    5 3
    
    예상 출력
    8
    
  2. 예제 2

    입력
    1 0
    
    예상 출력
    1
    
  3. 예제 3

    입력
    2022 39
    
    예상 출력
    273239559