www.pudn.com > zhejiang_university_acm_onlinejudge_code.rar > zp1149_dp.cpp


//--------------------------------------------------------------------------- 
 
#pragma hdrstop 
 
//--------------------------------------------------------------------------- 
 
#pragma argsused 
#include  
#include  
using namespace std; 
 
int main(int argc, char* argv[]) 
{ 
  int a[8],r[110],p[110]; 
  int cas,s,i,t,l,j,k; 
  cin>>a[1]>>a[2]>>a[3]>>a[4]>>a[5]>>a[6]; 
  cas=0; 
  while (a[1]+a[2]+a[3]+a[4]+a[5]+a[6]) 
  { 
    s=0; 
    for (i=1;i<=6;i++) 
      s+=i*a[i]; 
    if (s%2) 
      t=0; 
    else 
    { 
      s/=2; 
      if (s>60) 
      { 
        s%=60; 
        for (i=1;i<7;i++) 
          a[i]%=(60/i); 
      } 
      memset(r,0,sizeof(int)*100); r[0]=1; 
      memset(p,0,sizeof(int)*100); p[0]=1; 
      for (i=1;i<7;i++) 
        if (a[i]) 
        { 
          k=0; 
          while (k<=s) 
          { 
            if (r[k]==1) 
              for (j=1;j<=a[i];j++) 
                if (k+j*i<=s) 
                  p[k+j*i]=1; 
                else 
                  break; 
            k++; 
          } 
          memcpy(r,p,sizeof(int)*100); 
        } 
      t=r[s]; 
    } 
    cout<<"Collection #"<<++cas<<":"<>a[1]>>a[2]>>a[3]>>a[4]>>a[5]>>a[6]; 
  } 
  return 0; 
} 
//---------------------------------------------------------------------------