atcoder#ABC182F. [ABC182F] Valid payments

[ABC182F] Valid payments

题目描述

AtCoder 国には A1 A_1 円玉、A2 A_2 円玉、A3 A_3 円玉、 \dots AN A_N 円玉の N N 種類のコインがあります。
ここで A1 = 1 A_1\ =\ 1 であり、1  i < N 1\ \le\ i\ \lt\ N を満たす全ての整数 i i について、 Ai < Ai + 1 A_i\ \lt\ A_{i\ +\ 1} かつ Ai + 1 A_{i\ +\ 1} Ai A_i の倍数です。

この国のある店で、犬のルンルンは X X 円の商品を購入するために店員に y ( X) y\ (\ge\ X) 円を渡し、店員はお釣りとして y  X y\ -\ X 円を返しました。(お釣りが 0 0 円の可能性もあります)
このとき、ルンルンも店員もその金額をちょうど渡すのに必要な最小の枚数のコインで受け渡しを行いました。
また、ルンルンが店員に渡したコインのいずれかと同じ種類のコインが店員から返されることはありませんでした。

X X が与えられるので、y y として考えられる値が何通りあるかを求めてください。

输入格式

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

N N X X $ A_1\ \hspace{7pt}\ A_2\ \hspace{7pt}\ A_3\ \hspace{5pt}\ \dots\ \hspace{5pt}\ A_N $

输出格式

y y として考えられる値が何通りあるかを出力せよ。

题目大意

NN 种硬币,面值分别为 A1,A2,A3ANA_1,A_2,A_3 \dots A_N 元,满足 A1=1A_1=1,且对于所有 1i<N1 \le i < N,有 Ai<Ai+1A_i<A_{i+1}AiAi+1A_i|A_{i+1}

lunlun 用 y(X)y(\ge X) 元 买了一件 XX 元的商品,收到了 yXy-X 的找零。lunlun 和收银员都用了最少数量的硬币来付钱。特殊地,收银员没有和 lunlun 用相同种类的硬币。

给出 XX,求 yy 有多少种可能。

3 9
1 5 10
3
5 198
1 5 10 50 100
5
4 44
1 4 20 100
4
9 11837029798
1 942454037 2827362111 19791534777 257289952101 771869856303 3859349281515 30874794252120 216123559764840
21

提示

制約

  • 1  N  50 1\ \le\ N\ \le\ 50
  • $ 1\ =\ A_1\ \lt\ A_2\ \lt\ A_3\ \lt\ \dots\ \lt\ A_N\ \le\ 10^{15} $
  • Ai + 1 A_{i\ +\ 1} Ai A_i の倍数 (1  i < N) (1\ \le\ i\ \lt\ N)
  • 1  X  1015 1\ \le\ X\ \le\ 10^{15}
  • 入力はすべて整数

Sample Explanation 1

y y として考えられる値は 9, 10, 14 9,\ 10,\ 14 です。 例えば、 y = 14 y\ =\ 14 のときルンルンは 10 10 円玉 1 1 枚と 1 1 円玉 4 4 枚を渡し、店員は 5 5 円玉 1 1 枚でお釣りを返します。 このとき、ルンルンが渡したどの種類のコインも店員は返していないので条件を満たします。

Sample Explanation 2

y y として考えられる値は 198, 200, 203, 208, 248 198,\ 200,\ 203,\ 208,\ 248 です。

Sample Explanation 3

y y として考えられる値は 44, 60, 100, 104 44,\ 60,\ 100,\ 104 です。