POJ 1017

来源:互联网 发布:软件测试资质 编辑:程序博客网 时间:2024/04/30 04:00
#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的补充}}elset1-=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;}

0 0
原创粉丝点击