//具体是装箱问题向上取整数 //(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.