Shirotsume の日記

嘘Greedyを生やすな

FPS24題B - 整数の組

なんで気づかなかったんだシリーズ

問題文

整数  N が与えられます。次の条件を全て満たす非負整数の組  (a,b,c,d) の個数を  998244353 で割った余りを求めてください。

  •  a+b+c+d=N
  •  a 0 または  1
  •  b 0 または  1 または  2
  •  c は偶数
  •  d 3 の倍数

制約

  •  0≤N≤10 ^ 9
  •  N は整数

解法

 X = a + c , Y = b + d とおきます。この時、 a の制約より任意の  0 \leq X \leq N について、 a + c = X を満たす  (a, c) の組がちょうどひとつ対応します(  X 2 で割った商と余りを考えると明らか)。

 Y についても同様に、 (b, d) の組が一対一対応します( Y 3 で割った商と余り)。

よって結局  0 \leq X, Y \leq N かつ  X + Y = N を満たす  (X, Y) を数えればよく、これは  N + 1 通りです。