Description
Input
Output
Sample Input
0 0 4 0 0 1 7 5 1 0 0 0 0 0 0 0 0 0
Sample Output
2 1
题目分析
所有的箱子都是6*6尺寸的,但是物品有1*1,2*2,3*3,4*4,5*5以及6*6尺寸的,要求把所有的物品放进箱子中,求最少需要多少箱子。
解题思路
对于6*6,5*5以及4*4尺寸的物品每个物品需要占有一个箱子,对于3*3的物品一个箱子可以放4个,2*2的物品箱子可以放9个,1*1的可以放36个。采用面积统计1*1箱子的空位,采用向上去整的方法统计箱子。
源代码
#include<iostream>
#include<cstdio>
#include<cstring>
int num[4]={0,5,3,1};
int box[7];
int main()
{
while(1){
int tmp=0;
for(int i=1;i<=6;i++)
{
scanf("%d",&box[i]);
tmp+=box[i];
}
if(tmp==0)
break;
int ans=box[6]+box[5]+box[4]+(box[3]+3)/4;
int a2=box[4]*5+num[box[3]%4];
if(box[2]>a2)
ans+=(box[2]-a2+8)/9;
int a1=ans*36-box[6]*36-box[5]*25-box[4]*16-box[3]*9-box[2]*4;
if(box[1]>a1)
ans+=(box[1]-a1+35)/36;
printf("%d\n",ans);
}
return 0;
}