atcoder#ABC269F. [ABC269F] Numbered Checker

[ABC269F] Numbered Checker

配点 : 500500

問題文

NNMM 列のグリッドがあり、上から ii 行目、左から jj 列目のマス (i,j)(i,j) には整数 (i1)×M+j(i-1) \times M + j が書かれています。 このグリッドに、以下の操作を施します。

  • 全てのマス (i,j)(i,j) について、 i+ji+j が奇数ならそのマスに書かれている数字を 00 に書き換える。

操作後のグリッドについて、QQ 個の質問に答えてください。 ii 個目の質問は以下の通りです:

  • 以下の条件を全て満たすマス (p,q)(p,q) 全てについて、そこに書かれている整数を全て足し合わせた値を 998244353998244353 で割った余りを求めよ。- AipBiA_i \le p \le B_i
    • CiqDiC_i \le q \le D_i
  • AipBiA_i \le p \le B_i
  • CiqDiC_i \le q \le D_i

制約

  • 入力は全て整数
  • 1N,M1091 \le N,M \le 10^9
  • 1Q2×1051 \le Q \le 2 \times 10^5
  • 1AiBiN1 \le A_i \le B_i \le N
  • 1CiDiM1 \le C_i \le D_i \le M

入力

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

NN MM

QQ

A1A_1 B1B_1 C1C_1 D1D_1

A2A_2 B2B_2 C2C_2 D2D_2

\vdots

AQA_Q BQB_Q CQC_Q DQD_Q

出力

QQ 行出力せよ。 そのうち ii 行目には、 ii 個目の質問に対する答えを整数として出力せよ。

5 4
6
1 3 2 4
1 5 1 1
5 5 1 4
4 4 2 2
5 5 4 4
1 5 1 4
28
27
36
14
0
104

この入力では、グリッドは以下の通りです。

この入力には 66 つの質問が含まれます。

  • 11 個目の質問の答えは 0+3+0+6+0+8+0+11+0=280+3+0+6+0+8+0+11+0=28 です。
  • 22 個目の質問の答えは 1+0+9+0+17=271+0+9+0+17=27 です。
  • 33 個目の質問の答えは 17+0+19+0=3617+0+19+0=36 です。
  • 44 個目の質問の答えは 1414 です。
  • 55 個目の質問の答えは 00 です。
  • 66 個目の質問の答えは 104104 です。
1000000000 1000000000
3
1000000000 1000000000 1000000000 1000000000
165997482 306594988 719483261 992306147
1 1000000000 1 1000000000
716070898
240994972
536839100

11 個目の質問について、マス (109,109)(10^9,10^9) に書かれている整数は 101810^{18} ですが、それを 998244353998244353 で割った余りを求めることに注意してください。

999999999 999999999
3
999999999 999999999 999999999 999999999
216499784 840031647 84657913 415448790
1 999999999 1 999999999
712559605
648737448
540261130