题目大意:
存在1*1、2*2、3*3、4*4、5*5、6*6的几种底面积不同但高度相同的产品以及相应的包装盒,现在告诉你每种规格的产品的数量,要求你求出最少要用多少的包装盒。不同的产品只要装的下就可以装在同一个包装盒中。
#include<stdio.h>
int main()
{
int a[7],i,ans;
int flag=0;
while(1){
ans=flag=0;
for(i=1;i<=6;i++){
scanf("%d",&a[i]);
flag+=a[i];
}
if(!flag)
break;
ans+=a[6];a[6]=0;
ans+=a[5]; a[1]-=(a[5]*11);a[5]=0;
ans+=a[4];
if(a[2]>=a[4]*5){
a[2]-=a[4]*5;
}else{
a[1]-=(20*a[4]-a[2]*4);
a[2]=0;
}
ans+=a[3]/4;
if(a[3]%4!=0){
ans+=1;
a[3]%=4;
if(a[2]<=0){
a[1]-=(36-a[3]*9);
}
else{
if(a[3]==1){
if(a[2]>=5){
a[2]-=5;
a[1]-=7;
}else{
a[1]-=(27-a[2]*4);
a[2]=0;
}
}
else if(a[3]==2){
if(a[2]>=3){
a[2]-=3;
a[1]-=6;
}else{
a[1]-=18-a[2]*4;
a[2]=0;
}
}
else if(a[3]==3){
if(a[2]>=1){
a[2]-=1;
a[1]-=5;
}else{
a[1]-=9;
}
}
}
}
if(a[2]>0){
ans+=a[2]/9;
if(a[2]%9!=0){
ans+=1;
a[2]%=9;
a[1]-=(36-a[2]*4);
}
}
if(a[1]>0){
ans+=a[1]/36;
if(a[1]%36!=0)
ans+=1;
}
if(ans)
printf("%d\n",ans);
}
}
更有大神代码,mark!#include<stdio.h>
int main(){
int n,a,b,c,d,e,f,x,y;
int u[4]={0,5,3,1};
while(1){
scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f);
if(a==0&&b==0&&c==0&&d==0&&e==0&&f==0)
break;
n=d+e+f+(c+3)/4;
y=5*d+u[c%4];
if(b>y)
n+=(b-y+8)/9;
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);
}
return 0;
}
#include<stdio.h>
int main()
{
int a[7],i,ans;
int flag=0;
while(1){
ans=flag=0;
for(i=1;i<=6;i++){
scanf("%d",&a[i]);
flag+=a[i];
}
if(!flag)
break;
ans+=a[6];a[6]=0;
ans+=a[5]; a[1]-=(a[5]*11);a[5]=0;
ans+=a[4];
if(a[2]>=a[4]*5){
a[2]-=a[4]*5;
}else{
a[1]-=(20*a[4]-a[2]*4);
a[2]=0;
}
ans+=a[3]/4;
if(a[3]%4!=0){
ans+=1;
a[3]%=4;
if(a[2]<=0){
a[1]-=(36-a[3]*9);
}
else{
if(a[3]==1){
if(a[2]>=5){
a[2]-=5;
a[1]-=7;
}else{
a[1]-=(27-a[2]*4);
a[2]=0;
}
}
else if(a[3]==2){
if(a[2]>=3){
a[2]-=3;
a[1]-=6;
}else{
a[1]-=18-a[2]*4;
a[2]=0;
}
}
else if(a[3]==3){
if(a[2]>=1){
a[2]-=1;
a[1]-=5;
}else{
a[1]-=9;
}
}
}
}
if(a[2]>0){
ans+=a[2]/9;
if(a[2]%9!=0){
ans+=1;
a[2]%=9;
a[1]-=(36-a[2]*4);
}
}
if(a[1]>0){
ans+=a[1]/36;
if(a[1]%36!=0)
ans+=1;
}
if(ans)
printf("%d\n",ans);
}
}
#include<stdio.h>
int main(){
int n,a,b,c,d,e,f,x,y;
int u[4]={0,5,3,1};
while(1){
scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f);
if(a==0&&b==0&&c==0&&d==0&&e==0&&f==0)
break;
n=d+e+f+(c+3)/4;
y=5*d+u[c%4];
if(b>y)
n+=(b-y+8)/9;
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);
}
return 0;
}