問題一覧 > 通常問題

No.3045 反復重み付き累積和

レベル : / 実行時間制限 : 1ケース 5.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 36
作問者 : Nauclhlt🪷 / テスター : eiram naniwazu
0 ProblemId : 11871 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2025-02-28 21:27:41

ストーリー

nauclhltくんは普通の累積和じゃ満足出来なくなりました。また、累積和をとる回数も並大抵のものでは満たされません。
例えば、$10^9$回累積和を取ってみるとか……

問題文

ある数列$P$の重み$K$の累積和を次を満たす長さ$|P|$の数列$Q$として定義します。

  • $\displaystyle Q_i=\sum_{j=1}^i K^{i-j}P_j\ (1\leq i\leq |P|)$

ここで$|P|$は数列$P$の長さです。

長さ$N$の数列$A=(A_1, A_2, \cdots, A_N)$が与えられます。
以下の形式で与えられる$Q$個のクエリを順に処理してください。

  • 1 k x: 「$A$を$A$の重み$k$の累積和で置き換える」という操作を$x$回繰り返す
  • 2 x: $A_x$の値を$998244353$で割った余りを出力する

入力

$N\ Q$
$A_1\ A_2\ \cdots\ A_N$
$query_1$
$query_2$
$\vdots$
$query_Q$

各クエリは次のいずれかの形式で与えられます。

$1\ k\ x$
$2\ x$
  • $1\leq N\leq 2000$
  • $0\leq A_i\lt 998244353$
  • $1\leq Q\leq 2000$
  • 1 k xのクエリについて$1\leq k\lt 998244353, 1\leq x\leq 10^9$
  • 2 xのクエリについて$1\leq x\leq N$
  • 2 xのクエリは少なくとも1個以上与えられる
  • 入力はすべて整数

出力

2 xの形式のクエリの個数を$m$として、$m$行出力してください。
$i(1\leq i\leq m)$行目には$i$番目のクエリに対する答えを出力してください。
最後に改行してください。

サンプル

サンプル1
入力
4 3
3 1 4 1
2 3
1 2 1
2 3
出力
4
18
  • 1つ目のクエリについて、$A_3=4$より4を出力します。
  • 2つ目のクエリについて、$A$の重み$2$の累積和は$(3, 7, 18, 37)$です。よって$A$をこの数列で置き換えます。
  • 3つ目のクエリについて、$A_3=18$より18を出力します。
サンプル2
入力
3 2
1 1 2
1 3 2
2 2
出力
7

$A$の重み$3$の累積和は$(1, 4, 14)$です。さらにこの数列の重み$3$の累積和を求めると$(1, 7, 35)$となります。よって1つ目のクエリ後$A=(1, 7, 35)$です。
2つ目のクエリでは以上の結果より$A_2=7$なので7を出力します。

サンプル3
入力
10 2
0 9 9 8 2 4 4 3 5 3
1 998244352 998244353
2 10
出力
3

$998244353$で割った余りを出力してください。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。