这题本来是个水题,但是我前面坐的是统计前面几个盒子能装下1X1盒子的数量,估计会超LL,我没改成LL,
一直WA,然后我改成一边统计,一边比较,就A了。
这里贴上代码,写的略微复杂:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<string>
#include<set>
#include<map>
#include<iostream>
#include<algorithm>
#include<vector>
#include<cctype>
#include<queue>
#define LL long long
using namespace std;
const int maxn=1e7+10;
const double eps=1e-8;
const int Max=2147483647;
int main()
{
int a[6];
while(cin>>a[0]>>a[1]>>a[2]>>a[3]>>a[4]>>a[5])
{
if(!a[0]&&!a[1]&&!a[2]&&!a[3]&&!a[4]&&!a[5])
break;
int sum=a[5];
// int tt=0;
if(a[4])
{
sum+=a[4];
int tem=a[4]*11;
if(a[0]>=tem)
a[0]-=tem;
else
a[0]=0;
}
if(a[3])
{
sum+=a[3];
int tem=a[3]*5;
if(a[1]>=tem)
a[1]-=tem;
else
{
tem=(tem-a[1])*4;
if(a[0]>=tem)
a[0]-=tem;
else
a[0]=0;
a[1]=0;
}
}
if(a[2])
{
sum=sum+a[2]/4;
int tem=a[2]%4;
int tt=0;
if(tem)
{
sum++;
if(tem==1)
{
if(a[1]>=5)
{
a[1]-=5;
tt+=7;
}
else
{
tt=tt+27-4*a[1];
a[1]=0;
}
}
if(tem==2)
{
if(a[1]>=3)
{
a[1]-=3;
tt+=6;
}
else
{
tt=tt+18-4*a[1];
a[1]=0;
}
}
if(tem==3)
{
if(a[1]>=1)
{
a[1]-=1;
tt+=5;
}
else
{
tt=tt+9;
}
}
if(a[0]>=tt)
a[0]-=tt;
else
a[0]=0;
}
}
if(a[1])
{
sum=sum+a[1]/9;
int tem=a[1]%9;
if(tem)
{
sum++;
tem=36-tem*4;
if(a[0]>=tem)
a[0]-=tem;
else
a[0]=0;
}
}
if(a[0])
{
sum=sum+a[0]/36;
if(a[0]%36)
sum++;
}
cout<<sum<<endl;
}
return 0;
}