View Code of Problem 88

#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.


Back to problem 88