1 条题解
-
0
C :
#include<stdio.h> #include<math.h> #define MAX 1e-9 int h=1; double area(double x1,double y1,double x2,double y2,double x3,double y3) { return x1*y2+y1*x3+x2*y3-x1*y3-y1*x2-y2*x3; } int main() { double x1,x2,x3,y1,y2,y3,s,s1,s2,s3; while(scanf("%lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3)!=EOF) { int count=0; for(int i=1;i<100;i++) { for(int j=1;j<100;j++) { s=area(x1,y1,x2,y2,x3,y3); s1=area(i,j,x1,y1,x2,y2); s2=area(i,j,x2,y2,x3,y3); s3=area(i,j,x3,y3,x1,y1); if(s<0) s=-s; if(s1<0) s1=-s1; if(s2<0) s2=-s2; if(s3<0) s3=-s3; if(fabs(s-(s1+s2+s3))<=MAX) count++; } } printf("Case #%d:",h++); printf(" %d\n",count); } return 0; }
C++ :
#include <stdio.h> #include <math.h> #define inf 1e-10 double area2(double x0,double y0,double x1,double y1,double x2,double y2) { return fabs(x0*y1+x2*y0+x1*y2-x2*y1-x0*y2-x1*y0); } double min(double a,double b) { return a<b?a:b; } double max(double a,double b) { return a>b?a:b; } int main() { int z=0; int i,j,count; double x0,x1,x2,y0,y1,y2,s0,s1,s2,s3; double minX,maxX,minY,maxY; while(scanf("%lf%lf%lf%lf%lf%lf",&x0,&y0,&x1,&y1,&x2,&y2)!=EOF) { minX=min(x0,min(x1,x2));minY=min(y0,min(y1,y2)); maxX=max(x0,max(x1,x2));maxY=max(y0,max(y1,y2)); count=0; for(i=minX;i<=maxX;i++) for(j=minY;j<=maxY;j++) { s0=area2(x0,y0,x1,y1,x2,y2); s1=area2(i,j,x0,y0,x1,y1); s2=area2(i,j,x1,y1,x2,y2); s3=area2(i,j,x2,y2,x0,y0); if(fabs(s0-s1-s2-s3)<inf) count++; } printf("Case #%d: %d\n",++z,count); } return 0; }
- 1
信息
- ID
- 3599
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者