問題一覧 > 通常問題

No.2670 Sum of Products of Interval Lengths

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 27
作問者 : suisen / テスター : cureskol 👑 ygussany kaichou243
1 ProblemId : 10305 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2024-02-11 22:17:24

問題文

正整数 n,mn,m が与えられます。

各要素が 11 以上 mm 以下の整数であるような長さ nn の整数列 A=(A1,A2,,An)A = (A _ 1, A _ 2, \ldots, A _ n) に対して、1lrn1\leq l\leq r\leq n を満たす整数組 (l,r)(l,r)よい組 であるとは、次が成り立つことを言います。

  • 全ての i=0,1,,rli = 0, 1, \ldots, r - l に対して Al+i=Al+iA _ {l + i} = A _ l + i を満たす

また、整数列 (x1,x2,,xk)(x _ 1, x _ 2, \ldots, x _ k)よい列 であるとは、次の 22 つが全て成り立つことを言います。

  • 1=x1<x2<<xk=n+11 = x _ 1\lt x _ 2\lt \cdots \lt x _ k = n + 1
  • 全ての i=1,2,,k1i = 1,2,\ldots,k - 1 に対して、組 (xi,xi+11)(x _ i, x _ {i + 1} - 1)よい組 である

任意の AA に対して長さ最小の よい列 xx が一意に定まることを証明できるので、これを x=(x1,x2,,xk)x ^ \ast = (x ^ \ast _ 1, x ^ \ast _ 2, \ldots, x ^ \ast _ k) とします。そして、AAスコア f(A)f(A) を次で定義します。

f(A)i=1k1(xi+1xi).f(A)\coloneqq\prod _ {i = 1} ^ {k - 1} (x ^ \ast _ {i + 1} - x ^ \ast _ i).

各要素が 11 以上 mm 以下の整数であるような長さ nn の整数列 AAmnm ^ n 通り存在しますが、その全てに対する スコア の総和を 998244353998244353 で割ったあまりを求めてください。

入力

入力は以下の形式で標準入力から与えられます。

n mn\ m
  • 入力は全て整数で与えられる。
  • 1n2×1051\leq n\leq 2\times 10 ^ 5
  • 1m10181\leq m\leq 10 ^ {18}

出力

答えを 11 行に出力して改行してください。

サンプル

サンプル1
入力
3 2
出力
12

この入力は n=3, m=2n=3,\ m=2 を表します。AA としてあり得るものは (1,1,1), (1,1,2), (1,2,1), (1,2,2), (2,1,1), (2,1,2), (2,2,1), (2,2,2)(1,1,1),\ (1,1,2),\ (1,2,1),\ (1,2,2),\ (2,1,1),\ (2,1,2),\ (2,2,1),\ (2,2,2)88 つあります。

例えば A=(1,1,2)A = (1,1,2) に対して、よい列x=(1,2,3,4)x = (1,2,3,4)x=(1,2,4)x = (1,2,4)22 つ存在しますが、このうち長さ最小のものは x=(1,2,4)x ^ \ast = (1,2,4) です。従って、この AA に対するスコアは (21)×(42)=2(2 - 1) \times (4 - 2) = 2 と定まります。

(1,1,1), (1,1,2), (1,2,1), (1,2,2), (2,1,1), (2,1,2), (2,2,1), (2,2,2)(1,1,1),\ (1,1,2),\ (1,2,1),\ (1,2,2),\ (2,1,1),\ (2,1,2),\ (2,2,1),\ (2,2,2) に対するスコアはそれぞれ 1,2,2,2,1,2,1,11,2,2,2,1,2,1,1 であることが確かめられるので、答えとしてその総和である 1212 を出力してください。

サンプル2
入力
200000 1000000000000000000
出力
156232207

スコア の総和を 998244353998244353 で割ったあまりを出力してください。

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