编程题
求解硬币组成问题
### 题目描述
实现一个算法求解组成硬币问题。介绍如下:
- 假设有面值给定的一些硬币,以及给定的总合值,问构成总合值的方法有多少种。
### 输入描述
第一行为两个数字 $N,M$,$N$ 表示硬币面值的种类数, $M$ 表示给定的总合值。
第二行为 $N$ 个数字 $A_i$,表示硬币面值。
其中,$1 \leq A,M,A_i \leq 1000$,每种面值的硬币都有无数个。
### 输出描述
输出一行,为构成总合值的方法数。
### 输入输出样例
#### 示例
> 输入
```txt
3 3
1 2 3
```
> 输出
```txt
3
```