問題文
三次元座標空間内の閉半空間 Hm={(x,y,z)∈R3:Amx+Bmy+Cmz+Dm≥0} が 与えられます(m=1,…,M, (Am.Bm,Cm)=(0,0,0))。
これらは P:=H1∩⋯∩HM が [−15,15]3 に含まれるような3次元の整凸多面体(頂点が格子点である凸多面体)となるように与えられます。
原点を中心とする P の N 倍相似拡大 NP:={(Nx,Ny,Nz):(x,y,z)∈P} の内部にある格子点の個数を 998244353 で割った余りを求めてください。
以下は用語と入力についての説明です。
- 凸多面体 P が「3次元」であるとは、P がある平面上に乗っていることがない、すなわち体積が 0 ではないという意味です。
- P の「内部」とは開半空間 Hm′={(x,y,z)∈R3:Amx+Bmy+Cmz+Dm>0} たちの共通部分 H1′∩⋯∩HM′ のことです。
- 入力には「無駄な」ものがありません。つまり、H1,…,HM のいずれか一つでも除くと、P とは異なる図形になってしまいます。
- Am,Bm,Cm,Dm は互いに素です。
- P とそれを囲む閉半空間 H1,…,HM は、[−15,15]3 に含まれるいくつかの格子点の凸包として計算されたものになっています。
入力
N M
A1 B1 C1 D1
⋮
AM BM CM DM
1≤N≤109,
4≤M≤20,
−109≤Am,Bm,Cm,Dm≤109.
サンプル
サンプル1
入力
10 6
0 -1 0 10
-1 0 0 10
0 1 0 0
0 0 -1 10
0 0 1 0
1 0 0 0
出力
970299
この入力から与えられる閉半空間たちの共通部分は、一辺の長さが 10 の立方体である。これを 10 倍相似拡大すると一辺 100 の立方体になり、内部にある点の個数は 993=970299 個となる。
サンプル2
入力
123 8
-1 -1 1 1
-1 -1 -1 1
-1 1 1 1
1 1 -1 1
1 -1 -1 1
1 -1 1 1
1 1 1 1
-1 1 -1 1
出力
2451225
この入力から与えられる閉半空間たちの共通部分は、以下の八面体である:

N 倍相似拡大の内部に含まれる点の個数を求めてみる。0≤k≤N−1 として、z=N−k を固定して切断した xy-平面を考えると、そこにある格子点は (±k,0),(0,±k) を頂点に持つ正方形の内部にある格子点である。
簡単な計算からこの平面上には格子点が 2(k−1)k+1 個あることが分かる。これを、k=1,…,N−1 について足し合わせると、z-座標が正の格子点の個数が求まる。したがって、求めるものは
2k=1∑N−1[2(k−1)k+1]+(2(N−1)N+1)=32(N−1)N(2N−1)+2(N−1)+1.
N=123 のときを計算すると 2451225 となる。
サンプル3
入力
134656493 14
0 5 -6 75
-15 -10 8 195
-15 5 -4 240
-75 -105 32 810
15 10 17 180
10 15 -14 145
30 45 14 435
-15 10 -7 270
0 -15 -7 150
195 -75 221 1725
65 -25 -42 575
-15 -21 8 162
-15 -30 4 225
-15 -30 14 225
出力
902145025
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。