poj 1017

这道题可以说是模拟,也可以说是数学题;

以前在codeforce做过一题类似的,但是写的好长好长,后来看了大神写的代码后被折服...

 1 #include<stdio.h>
 2 int main(){
 3     int n,a,b,c,d,e,f,x,y;
 4     int u[4]={0,5,3,1};
 5     while(1){
 6         scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f);
 7         if(a==0&&b==0&&c==0&&d==0&&e==0&&f==0)
 8             break;
 9         n=d+e+f+(c+3)/4; //大块物体需要的箱子数目;
10         y=5*d+u[c%4];  //所用箱子中剩余2*2的空格的数目
11         if(b>y)
12             n+=(b-y+8)/9;//计算用来装2*2物体的数目
13         x=36*n-36*f-25*e-16*d-9*c-4*b;//计算所有箱子中1*1空格的数目
14         if(a>x)
15             n+=(a-x+35)/36;//计算单独装1*1物体的数目
16         printf("%d\n",n);
17     }
18     return 0;
19 }
View Code

 

posted @ 2013-08-25 22:07  Yours1103  阅读(270)  评论(0编辑  收藏  举报