1017装箱问题

描述

一个工厂生产的产品包装在方形的数据包相同的高度h和尺寸的1 * 1,2 * 2,3 * 3,4 * 4,5 * 5,6 * 6。这些产品总是交付给客户在广场地块的同一高度h的大小的产品有6 * 6。由于费用是工厂的利益,以及客户,以尽量减少所需提供从工厂订购的产品给客户的包裹数量。一个很好的解决方案需要寻找包裹的最小数量根据订单交付给定的产品的问题,可以节省很多钱。你被要求做这样一个程序。

输入

该输入文件包含的几行中指定的命令。每行指定一个数量级。订单完全由一个空格代表先后从最小尺寸1 * 1个体大小的数据包的数量,以最大的尺寸为6 * 6分开的6个整数描述。输入文件中的末尾是由含有六个零的线表示。

产量

输出文件包含一个行中输入文件的每一行。此行包含包裹在其中输入文件的相应行的顺序可以装的最小数量。有在对应于最后的``空'线的输入文件的输出文件中没有线。

样例输入

0 0 4 0 0 1 
7 5 1 0 0 0 
0 0 0 0 0 0 

样例输出

2 
1 
#include<iostream>
using namespace std;
int main(){
	int N,a,b,c,d,e,f,y,x;
	int u[4]={0,5,3,1};
	while (1){
		cin>>a>>b>>c>>d>>e>>f;
		if (a==0 && b==0 && c==0 && d==0 && e==0 && f==0  ) break;
		N=f+e+d+(c+3)/4; 
		y=5*d+u[c%4];
		if (b>y)	N+=(b-y+8)/9;
		x=36*N-36*f-25*e-16*d-9*c-4*b;
		if (a>x) N+=(a-x+35)/36;	
		cout<<N<<endl;
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值