题目描述
某国家有 n 种不同面值的货币,第 i 种货币价值 ai 元。
请问:如果每种货币都提供任意多的数量的情况下,如果需要 m 元金额的货币,有多少种不同的方案?
输入
第一行两个整数 n,m(m≤5000,n≤100);
以下 nn 行,每行一个整数,第 i+1 行为第 i 种货币的面值。
输出
一个整数,为方案数(方案数≤10^18)。
样例
输入
复制
3 10 1 2 5
输出
复制
10
代码
#include<bits/stdc++.h>
using namespace std;
int n,m;
long long s[3005]={1};
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
int w;
cin>>w;
for(int j=w;j<=m;j++){
s[j]+=s[j-w];
}
}
cout<<s[m];
return 0;
}