問題一覧 > 通常問題

No.3716 Keep it Integer

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 1024 MB / 標準ジャッジ問題
タグ : (AC するまで非表示) / 解いたユーザー数 40
作問者 : 👑 loop0919 / テスター : ぽえ kazuppa
お気に入りにしたユーザー ProblemId : 13913 / 自分の提出
問題文最終更新日: 2026-09-18 21:22:21
yukicoder contest 514 (順位表) の他の問題:

問題文

正整数 $N, X$ と、長さ $N$ の正整数列 $A = (A_1, A_2, \cdots, A_N)$ が与えられます。
また、変数 $x$ があります。はじめ $x = X$ です。

$i = 1, 2, \cdots, N$ の順に、それぞれの $i$ について、以下の操作のうちどちらか一方の操作のみを行います。

  • タイプ $1$ : $x$ を $A_i$ に更新する。
  • タイプ $2$ : $x$ を $x \div A_i$ に更新する。

どの時点(つまり、初期状態および各操作の直後)についても $x$ が整数であるような操作列の個数を $998244353$ で割った余りを求めてください。

ここで $2$ つの操作列は、ある整数 $k ~ (1 \leq k \leq N)$ が存在して、 $i = k$ のときに行った操作のタイプが異なるとき(かつそのときに限り)区別します。

制約

  • 入力される値はすべて整数
  • $1 \leq N \leq 2 \times 10^5$
  • $1 \leq X \leq 10^{18}$
  • $1 \leq A_i \leq 10^{18}$

入力

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

$N$ $X$
$A_1$ $A_2$ $\ldots$ $A_N$

出力

答えを出力せよ。

サンプル

サンプル1
入力
4 10
2 5 5 1
出力
10

例えば、以下のような操作を行うことで、どの時点でも $x$ が整数であるという条件を満たします。はじめ $x = 10$ です。

  • $i = 1$ のとき、タイプ $2$ の操作を行う。 $x = 10 \div 2 = 5$ に更新する。
  • $i = 2$ のとき、タイプ $1$ の操作を行う。 $x = 5$ に更新する。
  • $i = 3$ のとき、タイプ $2$ の操作を行う。 $x = 5 \div 5 = 1$ に更新する。
  • $i = 4$ のとき、タイプ $1$ の操作を行う。 $x = 1$ に更新する。

このような操作列が $10$ 個存在します。

サンプル2
入力
32 998244353
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
出力
301989884

問題文の条件を満たす操作列の個数を $998244353$ で割った余りを出力してください。

サンプル3
入力
11 59049
9 1048576 4 1 9765625 3 1024 1 2 243 32
出力
24

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