本题类似 900.整数划分
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
const int N = 1e4 + 10, M = 30;
int n, v;
int d[M];
LL dp[N];
int main() {
cin >> n >> v;
for(int i = 0; i < n; ++i) cin >> d[i];
dp[0] = 1l;
for(int i = 0; i < n; ++i) {
for(int j = d[i]; j <= v; ++j) {
dp[j] += dp[j - d[i]];
}
}
cout << dp[v];
return 0;
}