#2561. 奶牛的硬币

奶牛的硬币

题目描述

在创立了她们自己的政权之后,奶牛们决定推广新的货币系统。在强烈的叛逆心理的驱使下,她们准备使用奇怪的面值。在传统的货币系统中,硬币的面值通常是1\red{1,}5\red{5,}10\red{10,}20\red{20}25\red{25,}50\red{50,}以及100\red{100}单位的货币,有时为了更方便地交易,会发行面值为2\red{2}单位的硬币。

奶牛们想知道,对于一个给定的货币系统,如果需要正好凑出一定数量的钱,会有多少种不同的方法。比如说,你手上有无限多个面值为{1\red{\{1,}2\red{2,}5\red{5,}10\red{10,}...}\red{\}}的硬币,并且打算凑出18\red{18}单位货币,那么你有多种方法来达到你的目的:18×1\red{18\times1,}9×2\red{9\times2,}8×2+2×1\red{8\times2+2\times1 ,}3×5+2+1\red{3\times5+2+1,}以及其他的未列出的若干方案。 请你写一个程序,帮奶牛们计算一下,如果想用有V(1<=V<=25)\red{V (1 <= V <= 25)}种面值的硬币,凑出总价值为N(1<=N<=10,000)\red{N(1 <= N <= 10,000)}的一堆钱,一共有多少种不同的方法。答案保证不会超出C/C++\red{C/C++}中的'longlong\red{long long}',Pascal\red{Pascal}中的'Int64\red{Int64}',或是Java\red{Java}中的'long\red{long}'的范围。

输入格式

1\red{1}行: 2\red{2}个用空格隔开的整数:V\red{V}N\red{N}

2..V+1\red{2..V+1}行: 每行1\red{1}个整数,表示1\red{1}种硬币面值

输出格式

1\red{1}行: 输出1\red{1}个正整数,表示用这V\red{V}种面值的硬币,凑出N\red{N}单位的货币的不同方法总数。

样例

输入样例

3 10
1
2
5

输出样例

10