题目:
b站视频:BV1MD4y1H7FU
代码:
#include<stdio.h>
int main(){
int a[10];
int res2[4] = {0,5,3,1};
while(1){
int sum = 0; //记录总共有多少个零件需要打包
int i = 0;
int ans = 0;
for(i=1;i<7;i++){
scanf("%d",&a[i]);
sum+=a[i];
}
if(sum==0){//输入0 0 0 0 0 0 结束循环
break;
}
//不能塞的零件打包
ans=ans+a[6]+a[5]+a[4]+(a[3]+4-1)/4;
//塞小包裹
//2*2
int ret2 = 5*a[4]+res2[a[3]%4];//4*4和3*3包裹中剩余能放2*2包裹的数量
if(a[2]>ret2){//剩余位置不足以放完2*2的零件
ans = ans+(a[2]-ret2+9-1)/9; //强行放入 ?不懂 向上取整巧妙计算
}
//1*1
int ret1 = ans*36-a[6]*36-a[5]*25-a[4]*16-a[3]*9-a[2]*4;
if(ret1<a[1]){
ans = ans+(a[1]-ret1+36-1)/36;
}
printf("%d\n",ans);
}
return 0;
}