atcoder#ABC228E. [ABC228E] Integer Sequence Fair

[ABC228E] Integer Sequence Fair

配点 : 500500

問題文

整数列を一堂に集めてその優劣を定める、整数列品評会が行われます。 品評会では、11 以上 KK 以下の整数からなる長さ NN の整数列すべてが審査対象となり、 審査対象の数列それぞれに対して 11 以上 MM 以下の整数の点数をつけます。

「審査対象の数列それぞれに対して 11 以上 MM 以下の整数の点数をつける方法」が何通りあるかを 998244353998244353 で割ったあまりを出力してください。

ただし、22 つの方法が異なるとは「審査対象となるある数列 A=(A1,A2,,AN)A = (A_1, A_2, \ldots, A_N) が存在して、 AA に対してつける点数が 22 つの方法で異なる」ことを言います。

制約

  • 1N,K,M10181 \leq N, K, M \leq 10^{18}
  • N,K,MN, K, M は整数

入力

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

NN KK MM

出力

「審査対象の数列それぞれに対して 11 以上 MM 以下の整数の点数をつける方法」が何通りあるかを 998244353998244353 で割ったあまりを出力せよ。

2 2 2
16

審査対象となる数列は、(1,1),(1,2),(2,1),(2,2)(1, 1), (1, 2), (2, 1), (2, 2)44 つです。「審査対象の数列それぞれに対して 11 以上 22 以下の整数の点数をつける方法」は、以下の 1616 通りあります。

  • (1,1)(1, 1)11 点、(1,2)(1, 2)11 点、(2,1)(2, 1)11 点、(2,2)(2, 2)11 点をつける方法
  • (1,1)(1, 1)11 点、(1,2)(1, 2)11 点、(2,1)(2, 1)11 点、(2,2)(2, 2)22 点をつける方法
  • (1,1)(1, 1)11 点、(1,2)(1, 2)11 点、(2,1)(2, 1)22 点、(2,2)(2, 2)11 点をつける方法
  • (1,1)(1, 1)11 点、(1,2)(1, 2)11 点、(2,1)(2, 1)22 点、(2,2)(2, 2)22 点をつける方法
  • \cdots
  • (1,1)(1, 1)22 点、(1,2)(1, 2)22 点、(2,1)(2, 1)22 点、(2,2)(2, 2)22 点をつける方法

よって、1616 を出力します。

3 14 15926535
109718301

998244353998244353 で割ったあまりを出力することに注意してください。