zoukankan      html  css  js  c++  java
  • POJ 1269 Intersecting Lines

    简单细节题。输出的时候%.2lf C++能过,G++过不了。改成%.2f G++才能过......

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<vector>
    #include<string>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    
    
    struct J
    {
        int fz,fm;
        int zf;
    };
    vector<J>Q;
    
    struct Line
    {
        int a,b,c;
    }line1,line2;
    int T;
    int X1,Y1,X2,Y2,X3,Y3,X4,Y4;
    
    int gcd(int a, int b)
    {
        if (a%b==0) return b;
        return gcd(b,a%b);
    }
    
    int main()
    {
        scanf("%d",&T);
        printf("INTERSECTING LINES OUTPUT
    ");
        while(T--)
        {
            scanf("%d%d%d%d%d%d%d%d",&X1,&Y1,&X2,&Y2,&X3,&Y3,&X4,&Y4);
            Q.clear();
    
            line1.a=Y2-Y1;
            line1.b=X2-X1;
            line1.c=Y2*(X2-X1)-X2*(Y2-Y1);
    
            line2.a=Y4-Y3;
            line2.b=X4-X3;
            line2.c=Y4*(X4-X3)-X4*(Y4-Y3);
    
            bool fail=0;
            if(line1.a==0&&line2.a!=0) fail=1;
            if(line1.b==0&&line2.b!=0) fail=1;
            if(line1.c==0&&line2.c!=0) fail=1;
            if(line1.a!=0&&line2.a==0) fail=1;
            if(line1.b!=0&&line2.b==0) fail=1;
            if(line1.c!=0&&line2.c==0) fail=1;
            if(fail==0)
            {
                if(line1.a==0&&line2.a==0){}
                else {
                    int num=0,zf;
                    if(line1.a>0) num++;
                    if(line2.a>0) num++;
                    if(num%2==0) zf=1;
                    else zf=-1;
                    J r;
                    r.zf=zf;
                    r.fz=r.zf*abs(line1.a)/gcd(abs(line1.a),abs(line2.a));
                    r.fm=abs(line2.a)/gcd(abs(line1.a),abs(line2.a));
                    Q.push_back(r);
                }
    
                if(line1.b==0&&line2.b==0){}
                else {
                    int num=0,zf;
                    if(line1.b>0) num++;
                    if(line2.b>0) num++;
                    if(num%2==0) zf=1;
                    else zf=-1;
                    J r;
                    r.zf=zf;
                    r.fz=r.zf*abs(line1.b)/gcd(abs(line1.b),abs(line2.b));
                    r.fm=abs(line2.b)/gcd(abs(line1.b),abs(line2.b));
                    Q.push_back(r);
                }
    
                if(line1.c==0&&line2.c==0){}
                else {
                    int num=0,zf;
                    if(line1.b>0) num++;
                    if(line2.b>0) num++;
                    if(num%2==0) zf=1;
                    else zf=-1;
                    J r;
                    r.zf=zf;
                    r.fz=r.zf*abs(line1.c)/gcd(abs(line1.c),abs(line2.c));
                    r.fm=abs(line2.c)/gcd(abs(line1.c),abs(line2.c));
                    Q.push_back(r);
                }
                int biaozhunA=Q[0].fz;
                int biaozhunB=Q[0].fm;
                for(int i=0;i<Q.size();i++)
                    if(Q[i].fz!=biaozhunA||Q[i].fm!=biaozhunB) fail=1;
            }
            if(fail==0) {printf("LINE
    ");continue;}
            else
            {
                if(line1.a*line2.b==line2.a*line1.b) {printf("NONE
    ");continue;}
                else
                {
                    double ansX=1.0*(line1.b*line2.c-line2.b*line1.c)/(line1.a*line2.b-line2.a*line1.b);
                    double ansY=-1.0*(line2.a*line1.c-line1.a*line2.c)/(line1.a*line2.b-line2.a*line1.b);
                    printf("POINT %.2lf %.2lf
    ",ansX,ansY);
                }
            }
        }
        printf("END OF OUTPUT
    ");
        return 0;
    }
  • 相关阅读:
    智能移动机器人背后蕴含的技术——激光雷达
    Kalman Filters
    Fiddler抓HttpClient的包
    VSCode开发WebApi EFCore的坑
    WPF之小米Logo超圆角的实现
    windows react打包发布
    jenkins in docker踩坑汇总
    Using ML.NET in Jupyter notebooks 在jupyter notebook中使用ML.NET ——No design time or full build available
    【Linux知识点】CentOS7 更换阿里云源
    【Golang 报错】exec gcc executable file not found in %PATH%
  • 原文地址:https://www.cnblogs.com/zufezzt/p/5150259.html
Copyright © 2011-2022 走看看