凑钱

测试数据来自 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

递推算法练习题(二)

未认领
状态
已结束
题目
11
开始时间
2025-01-03 00:00
截止时间
2025-03-01 23:59
可延期
24.0 小时