补集转化
#include<cstdio>
using namespace std;
const int mod=10;
int n,m,F[2005],G[2005],w[2005];
int main(){
scanf("%d%d",&n,&m);
for (int i=1; i<=n; i++) scanf("%d",&w[i]);
F[0]=1;
for (int i=1; i<=n; i++)
for (int j=m; j>=w[i]; j--)
(F[j]+=F[j-w[i]])%=mod;
for (int i=1; i<=n; i++){
for (int j=0; j<=m; j++) G[j]=0;
for (int j=0; j<=m; j++){
G[j]=F[j];
if (j>=w[i]) G[j]-=G[j-w[i]];
(G[j]+=mod)%=mod;
if (j) printf("%d",G[j]);
}
printf("
");
}
return 0;
}