凑钱
测试数据来自 system/1614
作业已超过截止时间,您无法递交本题目。
时间限制:1秒 内存限制:256M
【问题描述】
请你写一个程序帮助小H计算一下,用 \(N\) 种不同面值的纸币,每种有无限多张,凑出总价值为 \(M\) 的一堆钱,一共有多少种不同的方法。
比如你手上有面值为 \(1,2,5\) 的纸币,每种有无限多张,现在要用它们凑出价值为 \(10\) 的一堆钱,那么有如下 \(10\) 种方法:
\(1+1+1+1+1+1+1+1+1+1=10\)
\(1+1+1+1+1+1+1+1+2=10\)
\(1+1+1+1+1+1+2+2=10\)
\(1+1+1+1+2+2+2=10\)
\(1+1+2+2+2+2=10\)
\(2+2+2+2+2=10\)
\(1+1+1+1+1+5=10\)
\(1+1+1+2+5=10\)
\(1+2+2+5=10\)
\(5+5=10\)
【输入格式】
第 \(1\) 行有两个正整数 \(N\) 和 \(M\),表示纸币种数和要凑的价值数量;
以下的 \(N\) 行,每行一个正整数,表示第 \(i\) 种纸币的面额。
【输出格式】
输出 \(1\) 个正整数,表示用这 \(N\) 种面值的纸币,凑出 \(M\) 单位的货币的不同方法总数。答案保证不会超出 C/C++ 中的long long。
【输入输出样例】
Input
3 10
1
2
5
Output
10
【数据说明】
对于 \(100\%\) 的数据 \(1≤N≤100\),\(1≤M≤10000\)。
【来源】
Mr.he