解决一类整数拆分问题
void mu() { memset(c1,0,sizeof(c1)) ; memset(c2,0,sizeof(c2)) ; for(int i=0 ;i<=a[0]*b[0] ;i+=a[0])//a[i]第i项单价 b[i]第i项数量 c1[i]=1 ; for(int i=1 ;i<n ;i++)//n代表总共的单价数量 { for(int j=0 ;j<=sum ;j++)//sum代表幂次上限 { for(int k=0 ;k+j<=sum && k<=a[i]*b[i] ;k+=a[i]) c2[j+k]+=c1[j] ; } for(int j=0 ;j<=sum ;j++) { c1[j]=c2[j] ; c2[j]=0 ; } } }
最后c1[i]表示i次幂的系数