装箱问题

3007 装箱问题

Time Limit:1000MS  Memory Limit:65536K
Total Submit:112 Accepted:59

Description

一个工厂生产的产品形状都是长方体,高度都是h,主要有1*1,2*2,3*3,4*4,5*5,6*6等6种。这些产品在邮寄时被包装在一个6*6*h的长方体包裹中。由于邮费很贵,工厂希望减小每个订单的包裹数量以增加他们的利润。因此他们需要一个好的程序帮他们解决这个问题。你的任务就是设计这个程序。

Input

输入包括多组测试数据,每一行代表一个订单。每个订单里的一行包括六个整数,用空格隔开,从小到大分别为这6种产品的数量。6个0表示文件结束。

Output

针对每个订单输出一个整数,占一行,代表对应的订单所需的最小包裹数。没有多余的空行。

Sample Input

0 0 4 0 0 1
7 5 1 0 0 0
0 0 0 0 0 0

Sample Output

2
1

Source




#include<stdio.h>
int main()
{
 int a,b,c,d,e,f;   //共有多少1,2,3,4,5,6盒子
 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;
    int N;  //共需要N个盒子
    int x,y;  //1,2的空位
    N=f+e+d+(c+3)/4;
    int three[4]={0,5,3,1};
    y=5*d+three[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;

      }


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值