#include<iostream> using namespace std; int main() { int s1[4]={0,7,6,5}; //根据n3%4,判断此包中填入3*3,尽可能填2*2后还能填入1*1的个数(数组下标分别对应取余的0,1,2,3) int s2[4]={0,5,3,1}; //根据n3%4,判断此包中填入3*3后还能填入的2*2的个数 int n1,n2,n3,n4,n5,n6,t1,t2,sum; while(cin>>n1>>n2>>n3>>n4>>n5>>n6&&n1+n2+n3+n4+n5+n6!=0) { sum=n6+n5+n4+n3/4; //先计算出填完6,5,4,3所需的包的个数 if(n3%4!=0) //如果3*3填完后有剩余,补充一个包 sum++; t2=5*n4+s2[n3%4]; //所能填入的2*2的包 t1=11*n5+s1[n3%4]; //所能填入的1*1的包 n2-=t2; //将2*2填入后还能填入的2*2的个数 if(n2>0) //如果n2大于0,则在补充包 { sum+=n2/9; if(n2%9) //仍有剩余,继续补充一个 { ++sum; t1+=36-(n2%9)*4; // 填入2*2后剩余的需用1*1的补充 } } else t1-=n2*4; //如果n2小于0,则需用1*1补充 n1-=t1; //所能填入的1*1的包 if(n1>0) //同n2,添加1*1的包 { sum+=n1/36; if(n1%36)//若仍有剩余,再添加一个 ++sum; } cout<<sum<<endl; } return 0; }