나머지 합
시간 제한4초메모리 제한1024 MB
1부터 N까지의 값을 가중치 A_i에 따라 뽑는 생성기에서, 누적 합을 M으로 나눈 나머지가 처음으로 K가 될 때까지의 기댓값을 998244353으로 나눈 나머지로 구합니다.
문제
Snuke는 난수 생성기를 하나 발견했다. 이 생성기는 이상 이하의 정수를 하나 생성한다. 정수열 은 각 정수가 생성될 확률을 나타낸다. 정수 ()는 확률 로 생성되며, 여기서 이다. 생성기를 실행할 때마다 정수를 생성하는 과정은 서로 독립적으로 이루어진다.
Snuke에게는 현재 값이 인 정수 가 있다. Snuke는 다음 연산을 원하는 만큼 몇 번이든 수행할 수 있다.
- 생성기로 정수 를 생성하고, 를 으로 바꾼다.
가 가 될 때까지 필요한 연산 횟수의 기댓값을 구하라. 이 기댓값을 기약분수 로 나타내면, 이고 을 만족하는 정수 이 하나만 존재한다. 이 을 출력하라.
기댓값이 유한한 유리수임은 증명했다. 그러나 그 값을 으로 나눈 나머지인 정수 표현이 정의될 수 있는지는 증명하지 못했다. 죄송하다. 다만 으로 나누는 경우는 신경 쓰지 않아도 된다. 이 문제는 흡수 마르코프 연쇄로 모델링할 수 있으며, 모든 테스트에서 대응하는 기본 행렬이 을 법으로 정의됨을 보장한다.
입력
입력은 표준 입력으로 다음 형식으로 주어진다.
출력
가 가 될 때까지 필요한 연산 횟수의 기댓값을 으로 나눈 나머지를 출력한다.
제한
- 입력 값은 모두 정수이다.