01背包+高精度
#include<bits/stdc++.h>
int n,m,a,f[10001][101];
int main(){
int i,j,k;
f[0][0]=1;
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i){
scanf("%d",&a);
for(j=m;j>=a;--j)
for(k=0;k<100;++k){
f[j][k]+=f[j-a][k];
f[j][k+1]+=f[j][k]/10;
f[j][k]%=10;
}
}
for(i=100;i>=0&&f[m][i]==0;--i);
if(i<0)putchar('0');
for(;i>=0;--i)putchar(f[m][i]+'0');
}