POJ 1017

#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;
}

转载于:https://www.cnblogs.com/mingrigongchang/p/6246337.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值