1 条题解

  • 0
    @ 2025-4-14 18:45:32

    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
    上传者