打包装箱
内存限制: 128 MiB 时间限制: 1000 ms 标准输入输出 题目类型: 传统 评测方式: 文本比较
题目描述
八中开展爱心捐书活动,同学们纷纷踊跃把自己看过的旧书拿出来捐给贫困山区的孩子们,图书室的胥林老师把同学们捐献的书打包在了 6 种纸箱子里(打包好的各类纸箱子有若干个),纸箱子的高相同,但底面积分为1 * 1,2 * 2,3 * 3,4 * 4,5 * 5,6 * 6。现为了装车方便,需要把这些纸箱子装在若干个 6 * 6 的木箱子,木箱子的高和打包纸箱子相同,请你帮助胥老师,用最少的木箱子打包完所有的纸箱子。
输入格式
一行(六个数)用空格隔开
分别表示1 * 1、2 * 2、3 * 3、4 * 4、5 * 5、6 * 6六类纸箱子的个数( 每类箱子的个数小于等于 100 )
输出格式
一行,最少的木箱子个数
样例
样例输入
复制6 5 4 3 2 1
样例输出
复制7
#include <bits/stdc++.h>
using namespace std;
int ans;
int a[10];
int main() {
for(int i = 1; i <= 6; i++) {
scanf("%d", &a[i]);
}
ans += a[6];
ans += a[5];
a[1] -= a[5] * 11;
ans += a[4];
a[2] -= a[4] * 5;
ans += ceil(a[3] / 4.0);
a[3] %= 4;
if(a[3] == 3) {
a[2] -= 1;
a[1] -= 5;
} else if(a[3] == 2) {
a[2] -= 3;
a[1] -= 6;
} else if(a[3] == 1) {
a[2] -= 5;
a[1] -= 7;
}
if(a[2] > 0) {
ans += ceil(a[2] / 9.0);
}
if(a[1] > 0) {
if(a[2] < 0) {
a[1] += a[2] * 4;
}
if(a[1] > 0) {
ans += ceil(a[1] / 36.0);
}
}
printf("%d", ans);
return 0;
}