View Code of Problem 88

//具体是装箱问题向上取整数
//(a+n-1)/(n)等价于a除以n向上取整数
#include<stdio.h>
int main()
{
	int N,a,b,c,d,e,f,y,x;//N为总的箱子数,y为2*2在6,5,4,3装箱完以后剩余空位能装的个数
	int u[4]={0,5,3,1};
    scanf("%d%d%d%d%d%d",& a, & b, & c, & d, & e, & f);
    N=f+e+d+(c+3)/4;//先装6,5,4,3箱子 3*3的除以4并向上取整数表示需要新开的箱子数,而4*4及以上都是一个箱子,不需要向上取整
    //再看剩余的箱子,(c+3)/4的结果不同,则能装2*2的也不同
	y=5*d+u[c%4];
	if(b>y)N+=(b-y+8)/9;//为2新开箱,向上取整数
	x=36*N-36*f-25*e-16*d-9*c-4*b;
	if(a>x)N+=(a-x+35)/36;
	printf("%d\n",N);

}

Double click to view unformatted code.


Back to problem 88