题目链接:
http://bailian.openjudge.cn/practice/1017/
http://noi.openjudge.cn/ch0406/19/
0 0 4 0 0 1 7 5 1 0 0 0 0 0 0 0 0 0
2 1
1 #include <stdio.h> 2 int main() 3 { 4 int a,b,c,d,e,f,n;//n表示需要的箱子数 5 int x,y;//x表示1×1的空位数目;y表示2×2的空位数目 6 int u[4]={0,5,3,1};//表示3×3的产品数目分别为4k,4k+1,4k+2,4k+3时,为3×3产品打开的新箱子中剩余2×2的空位数目 7 8 while(scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f)!=EOF) 9 { 10 if(a==0&&b==0&&c==0&&d==0&&e==0&&f==0) break; 11 12 n=f+e+d+(c+3)/4; // (c+3)/4之所以要加3是为了使除法计算出来的箱子数目刚好能够装完2×2的产品。或者说是为了对c/4向上取整 13 y=5*d+u[c%4]; 14 if(b>y) 15 { 16 n=n+(b-y+8)/9;//多出来的2×2的产品应该占用的箱子数.加8是为了向上取整 17 } 18 x=36*n-36*f-25*e-16*d-9*c-4*b; 19 if(a>x) 20 n=n+(a-x+35)/36;//加35是为了向上取整 21 printf("%d\n",n); 22 } 23 return 0; 24 }
原文:https://www.cnblogs.com/huashanqingzhu/p/11834729.html