問題一覧 > 通常問題

No.2561 みんな大好きmod 998

レベル : / 実行時間制限 : 1ケース 4.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 210
作問者 : deuteridayodeuteridayo / テスター : 👑 AngrySadEightAngrySadEight Kyo_s_sKyo_s_s kusirakusirakusirakusira MagentorMagentor loop0919loop0919 rotti_coderrotti_coder ragnaragna マベマス(mavemas_413)マベマス(mavemas_413) けんぴんけんぴん akiaki
4 ProblemId : 10160 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2023-11-30 18:44:32

問題文

$N$ 個の整数 $A_1, A_2,\ldots, A_N$ が与えられます。
ここで, $1 \leq x_1 < x_2 < \ldots < x_K \leq N$ となるような $K$ 個の整数 $(x_1, x_2, \ldots, x_K)$ を選択し, $A_{x_1}, A_{x_2}, \ldots, A_{x_K}$ の総和を $S$ とします。
また, 以下のように $S_{998}$, $S_{998244353}$ を定義します。

  • $S_{998} = S\bmod 998$
  • $S_{998244353} = S\bmod 998244353$
このとき, $S_{998244353} \leq S_{998}$ となるような $(x_1, x_2, \ldots, x_K)$ の選び方は何通りあるかを求めてください。
ただし, 答えは少し大きくなる可能性があるので, $998$ で割った余りを出力してください。

modとは? $a\bmod b$ とは, $a$ を $b$ で割った余りを指します。
例えば, $7 \bmod 3 = 1$ です。

制約

  • $1 \leq N \leq 28$
  • $1 \leq K \leq \min( 8, N )$
  • $0 \leq A_i \leq 998244352$
  • 入力はすべて整数である

入力

$N\,K$
$A_1 \,A_2 \,\ldots \,A_N$

出力

答えを $998$ で割った余りを出力せよ。

サンプル

サンプル1
入力
4 2
300 400 500 600
出力
4

$(x_1, x_2)$ として考えられる組み合わせは, $(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)$ の $6$ 通りです。
たとえば, $(1, 2)$を選択したとき, $S=A_1 + A_2 = 300 + 400 = 700, S_{998244353}=700, S_{998}=700$ なので $S_{998244353} \leq S_{998}$ を満たします。
また, $(3, 4)$ を選択したとき, $S=A_3 + A_4 = 500 + 600 = 1100, S_{998244353}=1100, S_{998}=102$ なので $S_{998244353} \leq S_{998}$ を満たしません。
同様に考えると, 条件を満たすのは $(1, 2), (1, 3), (1, 4), (2, 3)$ の $4$ 通りであることがわかります。

サンプル2
入力
20 8
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
出力
222

求める答えは $125970$ 通りです。$998$ で割った余りを出力することに注意してください。

サンプル3
入力
8 8
812087642 562447828 487989038 879550309 409027146 501712355 131601217 18035145
出力
0

$S$ は32bit整数型に収まらない場合があることに注意してください。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。