격자 경로의 가중치

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

요약
주어진 이동 규칙에 따라 (0,0)에서 (t,t)로 가는 격자 경로마다 지나는 대각선 격자점 가중치의 곱을 구해, K 이상 N 이하인 모든 t에 대해 그 합을 998244353으로 나눈 나머지를 출력한다.
난이도

어려움10점 중 8점

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

문제

K≤t≤NK \leq t \leq N인 모든 정수 tt에 대하여, 좌표평면 위의 격자점 (0,0)(0,0)에서 출발해 다음 규칙에 따른 행동을 원하는 횟수만큼 시행해 격자점 (t,t)(t,t)에 도착하는 경로를 생각해 보자.

  • x>yx \gt y인 점 (x,y)(x,y)에서는 (x+1,y)(x+1,y) 또는 (x,y+1)(x,y+1)로 이동할 수 있다.
  • x≤yx \leq y인 점 (x,y)(x,y)에서는 (x+K,y+K−1)(x+K,y+K-1)로 이동할 수 있다.

좌표평면 위의 직선 y=xy=x 상에 있는 격자점 (i,i)(i,i)는 가중치 a_ia\_i를 가진다. 한 경로의 가중치는 경로에 포함된 직선 y=xy=x 상에 있는 모든 격자점의 가중치의 곱으로 정의한다.

점 (0,0)(0,0)에서 출발해 점 (t,t)(t,t)에 도착하는 서로 다른 경로의 가중치의 합을 구하여라. 경로에 포함된 점의 집합이 일치하지 않으면 다른 격자 경로이다.

입력

첫째 줄에 정수 NN과 KK가 공백으로 구분되어 주어진다. (1≤K≤N≤200,000)(1 \leq K \leq N \leq 200\\,000)

둘째 줄에 N+1N+1개의 정수 a_0a\_0, a_1a\_1, ⋯\cdots, a_Na\_{N}이 공백으로 구분되어 주어진다. (0≤a_i<998,244,353)(0 \leq a\_i \lt 998\\,244\\,353)

출력

K≤t≤NK \leq t \leq N인 모든 정수 tt에 대하여, 첫째 줄에 점 (0,0)(0,0)에서 출발해 행동을 원하는 횟수만큼 시행해 점 (t,t)(t,t)에 도착하는 서로 다른 격자 경로의 가중치의 합을 998,244,353998\\,244\\,353로 나눈 나머지를 공백으로 구분하여 출력한다.

예제1

  1. 예제 1

    입력
    4 2
    1 2 3 4 5
    
    예상 출력
    3 4 25