1017装箱问题

数学
AC代码:

#include <iostream>
using namespace std;
int main() {
	int a, b, c, d, e, f;
	//数组:分配3*3箱子装入后,剩给2*2, 1*1的剩余空间;
	int ans[8] = { 0,5,3,1,0,7,6,5 };
	while (cin >> a >> b >> c >> d >> e >> f) {
		if (a == 0 && b == 0 && c == 0 && d == 0 && e == 0 && f == 0) break;
		int sum = 0;
		sum = d + e + f + (c + 3) / 4;//先处理4*4, 5*5, 6*6, 3*3的
		a -= (e * 11 + ans[c % 4 + 4]);//多余空间由1*1, 2*2填补
		b -= (d * 5 + ans[c % 4]);
		if (b > 0) {//2*2的没装完
			sum += (b + 8) / 9;//9个2*2装一箱6*6
			if (b % 9 != 0)
				a -= (36 - b % 9 * 4);//多余空间由1*1填补
		}
		if (b < 0) {
			a -= (-b) * 4;
		}
		if (a > 0) sum += (a + 35) / 36;
		cout << sum << endl;
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值