POJ 1017Packets---简单模拟

来源:互联网 发布:问道1.52服务端源码 编辑:程序博客网 时间:2024/05/22 08:04

题目链接点击打开链接

AC代码

#include<iostream>using namespace std;int main(){    int a[8],i;    while(cin>>a[1])    {        int flag=a[1];        for(i=2; i<=6; ++i)        {            cin>>a[i];            flag+=a[i];        }        if(!flag) break;        int sum=a[6]+a[5]+a[4];    a[1]=a[1]-a[5]*11;///边长为5和1的组合    if(a[4]*5<a[2])///边长为4和2的组合,若2装不完    {        a[2]=a[2]-a[4]*5;    }    else///边长为2装完    {        int tmp=36*a[4]-16*a[4]-a[2]*4;///剩余面积        a[1]=a[1]-tmp;///装边长为1的        a[2]=0;///2被用完。。。    }    ///判断3喽    sum+=a[3]/4;    a[3]=a[3]%4;    if(a[3]!=0)    {        sum+=1;        int tmp=36-9*a[3];        int num=tmp/4-1;        if(a[2]>=num)        {            a[2]=a[2]-num;            tmp=tmp-num*4;            a[1]=a[1]-tmp;        }        else if(a[2]<num)        {            tmp=tmp-4*a[2];            a[2]=0;            a[1]=a[1]-tmp;        }    }    ///到二了!!!    if(a[2] > 0)    {        sum+=a[2]/9;        int rest=a[2]%9;        if(rest!=0)        {            sum+=1;            int tmp=36-rest*4;            a[1]-=tmp;        }    }    ///only 1!!!    if(a[1]>0)    {        sum+=a[1]/36;        if(a[1]%36!=0) sum+=1;    }    cout<<sum<<endl;    }}


0 0
原创粉丝点击