C0333 [USACO]货币系统

内存限制:256 MB 时间限制:1000 ms

题目描述

母牛们不但创建了它们自己的政府而且选择了建立了自己的货币系统。由于它们特殊的思考方式,它们对货币的数值感到好奇。

传统地,一个货币系统是由 $1,5,10,20$ 或 $25,50$ 和 $100$ 的单位面值组成的。

母牛想知道有多少种不同的方法来用货币系统中的货币来构造一个确定的数值。

举例来说,使用一个货币系统 {1,2,5,10,...} 产生 18 单位面值的一些可能的方法是:$18 \times 1, 9 \times 2, 8 \times 2+2 \times 1, 3  \times 5+2+1$,等等其它。 写一个程序来计算有多少种方法用给定的货币系统来构造一定数量的面值。保证总数将会适合 long long (C/C++),即在 $0$ 到 $2^{63}-1$ 之间。

输入格式

货币系统中货币的种类数目是 $V (1 \le V \le 25)$。要构造的数量钱是 $N (1 \le N \le 10,000)$。

第一行:二个整数,$V$ 和 $N$ 。

第二行: 可用的货币的面值 。

输出

单独的一行包含那个可能的用这 $v$ 种硬币凑足 $n$ 单位货币的方案数。

样例

样例输入 1

3 10 1 2 5

样例输出 1

10

提示