题目:
A factory produces products packed in square packets of the same height h and of the sizes 1*1, 2*2, 3*3, 4*4, 5*5, 6*6. These products are always delivered to customers in the square parcels of the same height h as the products have and of the size 6*6. Because of the expenses it is the interest of the factory as well as of the customer to minimize the number of parcels necessary to deliver the ordered products from the factory to the customer. A good program solving the problem of finding the minimal number of parcels necessary to deliver the given products according to an order would save a lot of money. You are asked to make such a program.
Input
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
分析:
6*6,5*5,4*4每种这样的箱子占一个大箱子,4个3*3的箱子占一个大箱子,2*2的可以放在跟4*4放在一起,也可以跟3*3的放在一起,1*1的可以放在有空的任意地方;
代码:
#include<iostream> using namespace std; int main() { int i,as,t,a2,a1,a[7]; while(1) { as=t=0; for(i=1;i<7;as+=a[i],i++) cin>>a[i]; if(as==0) break; t=a[5]+a[4]+a[6]+(a[3]+3)/4; if(a[3]%4) a2=(3-a[3]%4)*2+1+a[4]*5; else a2=a[4]*5; if(a[2]>a2) t+=(a[2]-a2+8)/9; a1=(t-a[6])*36-a[5]*25-a[4]*16-a[3]*9-a[2]*4; if(a[1]>a1) t+=(a[1]-a1+35)/36; cout<<t<<endl; } }