真是经典的数学思维,还有就是向上取整的技巧,(n+m-1)/m;
参考http://blog.sina.com.cn/s/blog_6e265bbe01012ewn.html
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int a[7],b[]={0,5,3,1};
int main(){
while(true){
int sum=0;
for(int i=1;i<7;i++){
scanf("%d",a+i);
sum+=a[i];
}
if(!sum) return 0;
int ans=0;
ans=a[6]+a[5]+a[4]+(a[3]+3)/4;//向上取整
int t=5*a[4]+b[a[3]%4];
if(a[2]>t) ans+=(a[2]-t+8)/9;//向上取整
t=36*ans-36*a[6]-25*a[5]-16*a[4]-9*a[3]-4*a[2];
if(t<a[1])ans+=(a[1]-t+35)/36;
cout<<ans<<endl;
}
return 0;
}