📄 toj 2f.txt
字号:
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <stdlib.h>
//#include <time.h>
using namespace std;
#define INFI 99999999
typedef struct POINT
{
double x;
double y;
}POINT;
POINT point[5];
POINT shuru[8];
POINT mid[4];
double toar;
double get_cj(POINT a,POINT b)
{
return a.x*b.y-a.y*b.x;
}
double get_area(int num)
{//num边形的面积
int i;
double area=0;
for(i=0;i<num;i++)
area+=get_cj(point[i],point[(i+1)%num]);
return area/2;
}
void solve()
{
double min1=INFI,min2=INFI,min=INFI,tt;
int i;
for(i=0;i<8;i+=2) point[(i/2)]=shuru[i];
toar=get_area(4)/2;
for(i=0;i<8;i+=2)
{
shuru[i+1].x=(shuru[i].x+shuru[(i+2)%8].x)/2;
shuru[i+1].y=(shuru[i].y+shuru[(i+2)%8].y)/2;
}
point[0]=shuru[0];point[1]=shuru[2];point[2]=shuru[3];tt=get_area(3);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
// printf("%.3f %.3f %.3f\n",tt,min,min1);
point[0]=shuru[0];point[1]=shuru[2];point[2]=shuru[4];tt=get_area(3);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
// printf("%.3f %.3f %.3f\n %.3f",tt,min,min1,toar);
point[0]=shuru[0];point[1]=shuru[5];point[2]=shuru[6];tt=get_area(3);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
// printf("%.3f %.3f %.3f\n",tt,min,min1);
point[0]=shuru[2];point[1]=shuru[4];point[2]=shuru[5];tt=get_area(3);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
// printf("%.3f %.3f %.3f\n",tt,min,min1);
point[0]=shuru[2];point[1]=shuru[4];point[2]=shuru[6];tt=get_area(3);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
// printf("%.3f %.3f %.3f\n",tt,min,min1);
point[0]=shuru[0];point[1]=shuru[2];point[2]=shuru[7];tt=get_area(3);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
point[0]=shuru[0];point[1]=shuru[1];point[2]=shuru[7];tt=get_area(3);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
point[0]=shuru[1];point[1]=shuru[2];point[2]=shuru[3];tt=get_area(3);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
point[0]=shuru[1];point[1]=shuru[2];point[2]=shuru[4];tt=get_area(3);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
point[0]=shuru[0];point[1]=shuru[1];point[2]=shuru[6];tt=get_area(3);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
point[0]=shuru[0];point[1]=shuru[1];point[2]=shuru[5];point[3]=shuru[6];tt=get_area(4);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
// printf("%.3f %.3f %.3f\n",tt,min,min1);
point[0]=shuru[0];point[1]=shuru[2];point[2]=shuru[3];point[3]=shuru[7];tt=get_area(4);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
// printf("%.3f %.3f %.3f\n",tt,min,min1);
if(min1>2*toar-min1) min1=2*toar-min1;
min2=2*toar-min1;
printf("%.3f %.3f\n",min1,min2);
}
int main()
{
int i=1;
scanf("%lf %lf %lf %lf %lf %lf %lf %lf",&shuru[0].x,&shuru[0].y,&shuru[2].x,&shuru[2].y,&shuru[4].x,&shuru[4].y,&shuru[6].x,&shuru[6].y);
while(!(shuru[0].x==0 &&shuru[0].y==0 &&shuru[2].x==0 &&shuru[2].y==0 && shuru[4].x==0 &&shuru[4].y==0 && shuru[6].x==0 &&shuru[6].y==0))
{
printf("Cake %d: ",i);
solve();
i++;
scanf("%lf %lf %lf %lf %lf %lf %lf %lf",&shuru[0].x,&shuru[0].y,&shuru[2].x,&shuru[2].y,&shuru[4].x,&shuru[4].y,&shuru[6].x,&shuru[6].y);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -