#include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> int main(){ int a[7]; for(int i=1;i<=6;i++){ scanf("%d",&a[i]); } int count=0; count+=(a[4]+a[5]+a[6]); if(a[2]>=5*a[4]){ a[2]-=5*a[4]; }else{ a[1]-=(20*a[1]-a[2]*4); a[2]=0; } int c[4]={0,5,3,1};//3*3 不同情况下2*2 int d[4]={0,7,6,5};//3*3 不同情况下的1*1 int x=a[3]/4; int t=a[3]%4; count+=x; if(t!=0){ count++; } if(a[2]>=c[t]){//这里只需要a[2]关于大于(c[t]+5*a[4])的情况进行增加即可,这样只需要计算1*1的格子就行 a[2]-=c[t]; }else{ a[1]-=(36-t*9-a[2]*4); a[2]=0; } if(a[2]>0){ count+=a[2]/9; if(a[2]%9!=0){ count++; a[1]-=(36-a[2]%9*4); } } if(a[1]>0){ int y=36*count-25*a[5]-16*a[4]-9*a[3]-4*a[2]-a[1]; count+=(a[1]+35)/36; } printf("%d",count); } //#include<stdio.h> //#include<math.h> //#include<stdlib.h> //#include<string.h> // //int main(){ // int c[4]={0,5,3,1}; // int a[7]={0}; // for(int i=1;i<=6;i++){ // scanf("%d",&a[i]); // } // int count=0; // count+=a[4]+a[5]+a[6]; // count+=(a[3]+3)/4; // int x=5*a[4]+c[a[3]%4]; // if(a[2]>x){//2*2如果大于目前所支持的2*2 则需要新的 //否则直接计算1*1的格子需求 // count+=(a[2]-x+8)/9; // } // int y=36*count-36*a[6]-25*a[5]-16*a[4]-9*a[3]-4*a[2]; // if(a[1]>y){ // count+=(a[1]-y+35)/36; // } // printf("%d",count); //} |
Double click to view unformatted code.