아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

나머지 합

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

요약
1부터 N까지의 값을 가중치 A_i에 따라 뽑는 생성기에서, 누적 합을 M으로 나눈 나머지가 처음으로 K가 될 때까지의 기댓값을 998244353으로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

유형
수학, 확률, 행렬
정답자
아직 제출이 없습니다

문제

Snuke는 난수 생성기를 하나 발견했다. 이 생성기는 11 이상 NN 이하의 정수를 하나 생성한다. 정수열 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N은 각 정수가 생성될 확률을 나타낸다. 정수 ii (1≤i≤N1 \leq i \leq N)는 확률 Ai/SA_i / S로 생성되며, 여기서 S=∑i=1NAiS = \sum_{i=1}^{N} A_i이다. 생성기를 실행할 때마다 정수를 생성하는 과정은 서로 독립적으로 이루어진다.

Snuke에게는 현재 값이 00인 정수 XX가 있다. Snuke는 다음 연산을 원하는 만큼 몇 번이든 수행할 수 있다.

  • 생성기로 정수 vv를 생성하고, XX를 X+vmod  MX + v \mod M으로 바꾼다.

XX가 KK가 될 때까지 필요한 연산 횟수의 기댓값을 구하라. 이 기댓값을 기약분수 P/QP/Q로 나타내면, R×Q≡Pmod  998244353R \times Q \equiv P \mod 998244353이고 0≤R<9982443530 \leq R < 998244353을 만족하는 정수 RR이 하나만 존재한다. 이 RR을 출력하라.

기댓값이 유한한 유리수임은 증명했다. 그러나 그 값을 998244353998244353으로 나눈 나머지인 정수 표현이 정의될 수 있는지는 증명하지 못했다. 죄송하다. 다만 00으로 나누는 경우는 신경 쓰지 않아도 된다. 이 문제는 흡수 마르코프 연쇄로 모델링할 수 있으며, 모든 테스트에서 대응하는 기본 행렬이 998244353998244353을 법으로 정의됨을 보장한다.

입력

입력은 표준 입력으로 다음 형식으로 주어진다.

NN MM KK

A1A_1 A2A_2 ⋯\cdots ANA_N

출력

XX가 KK가 될 때까지 필요한 연산 횟수의 기댓값을 998244353998244353으로 나눈 나머지를 출력한다.

제한

  • 1≤N≤min⁡(500,M−1)1 \leq N \leq \min(500,M-1)
  • 2≤M≤10182 \leq M \leq 10^{18}
  • 1≤K≤M−11 \leq K \leq M-1
  • 1≤Ai≤1001 \leq A_i \leq 100
  • 입력 값은 모두 정수이다.

예제2

  1. 예제 1

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

    입력
    10 100 50
    1 2 3 4 5 6 7 8 9 10
    
    예상 출력
    439915532