AT_awc0002_e お菓子の詰め合わせ

题目描述

高桥在一家糖果店里发现了 $N$ 种糖果。第 $i$ 种糖果的价格是 $A_i$ 日元($1 \leq i \leq N$)。由于每种糖果仅有一件,他对于每种糖果只能选择“买”或“不买”。需要注意的是,不同种类的糖果可能价格相同,但它们仍被认为是不同的糖果。 高桥恰好有 $S$ 日元。为了最大化利用这些钱,他希望购买若干种糖果,使得总价格恰好为 $S$ 日元,且一分钱也不剩。 在从这 $N$ 种糖果中选择 $0$ 个或若干种糖果的所有方法中,求使得所选糖果总价格恰好为 $S$ 日元的方法数。注意,如果没有选任何糖果,则总价格被认为是 $0$ 日元。

输入格式

> $N$ $S$ > $A_1$ $A_2$ $\ldots$ $A_N$ - 第一行包含两个整数 $N$(表示糖果种类数)和 $S$(高桥拥有的钱数),两者用空格隔开。 - 第二行包含 $A_1, A_2, \ldots, A_N$,表示每种糖果的价格,数字之间用空格隔开。

输出格式

输出一行,表示选取糖果使其总价格恰好为 $S$ 日元的方法数。

说明/提示

### 数据范围 - $1 \leq N \leq 40$ - $0 \leq S \leq 10^{12}$ - $1 \leq A_i \leq 10^{12}$ - 所有输入均为整数。 由 ChatGPT 5 翻译