atcoder#ABC255H. [ABC255Ex] Range Harvest Query

[ABC255Ex] Range Harvest Query

配点 : 600600

問題文

NN 本の木があります。00 日目にはどの木にも実は一つもなっていません。 11 日目以降の毎朝、それぞれの i=1,2,,Ni = 1, 2, \ldots, N について、ii 番目の木に ii 個の実が増えます。

高橋君は QQ 回の収穫作業をします。 i=1,2,,Qi = 1, 2, \ldots, Q について、ii 回目の収穫作業は DiD_i 日目の夜に行われ、その時点で LiL_i 番目から RiR_i 番目の木になっているすべての実を収穫します。

QQ 回の収穫作業のそれぞれについて、高橋君が収穫する実の個数を 998244353998244353 で割ったあまりを出力してください。

制約

  • 1N10181 \leq N \leq 10^{18}
  • 1Q2×1051 \leq Q \leq 2 \times 10^5
  • 1D1<D2<<DQ10181 \leq D_1 \lt D_2 \lt \cdots \lt D_Q \leq 10^{18}
  • 1LiRiN1 \leq L_i \leq R_i \leq N
  • 入力はすべて整数

入力

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

NN QQ

D1D_1 L1L_1 R1R_1

D2D_2 L2L_2 R2R_2

\vdots

DQD_Q LQL_Q RQR_Q

出力

QQ 行出力せよ。 i=1,2,,Qi = 1, 2, \ldots, Q について、ii 行目には高橋君が ii 回目の収穫作業で収穫する実の個数を 998244353998244353 で割ったあまりを出力せよ。

5 3
2 2 3
3 3 4
5 1 5
10
15
50

i=1,2,3,4,5i = 1, 2, 3, 4, 5 について、ii 番目の木になっている実の個数を AiA_i とし、 それぞれの木になっている実の個数を数列 A=(A1,A2,A3,A4,A5)A = (A_1, A_2, A_3, A_4, A_5) を用いて表すことにします。

  • 00 日目、A=(0,0,0,0,0)A = (0, 0, 0, 0, 0) です。
  • 11 日目の朝、それぞれの木に新たに実がなり、A=(1,2,3,4,5)A = (1, 2, 3, 4, 5) となります。
  • 22 日目の朝、それぞれの木に新たに実がなり、A=(2,4,6,8,10)A = (2, 4, 6, 8, 10) となります。
  • 22 日目の夜、高橋君は 11 回目の収穫を行います。4+6=104 + 6 = 10 個の木の実を収穫し、A=(2,0,0,8,10)A = (2, 0, 0, 8, 10) となります。
  • 33 日目の朝、それぞれの木に新たに実がなり、A=(3,2,3,12,15)A = (3, 2, 3, 12, 15) となります。
  • 33 日目の夜、高橋君は 22 回目の収穫を行います。3+12=153 + 12 = 15 個の木の実を収穫し、A=(3,2,0,0,15)A = (3, 2, 0, 0, 15) となります。
  • 44 日目の朝、それぞれの木に新たに実がなり、A=(4,4,3,4,20)A = (4, 4, 3, 4, 20)となります。
  • 55 日目の朝、それぞれの木に新たに実がなり、A=(5,6,6,8,25)A = (5, 6, 6, 8, 25)となります。
  • 55 日目の夜、高橋君は 33 回目の収穫を行います。5+6+6+8+25=505 + 6 + 6 + 8 + 25 = 50 個の木の実を収穫し、A=(0,0,0,0,0)A = (0, 0, 0, 0, 0) となります。
711741968710511029 1
82803157126515475 516874290286751784 588060532191410838
603657470

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