1 条题解

  • 0
    @ 2025-4-7 21:29:59

    C :

    #include<stdio.h>
    #include<math.h>
    
    struct point{
    
        int x;  //横坐标
    
        int y;  //纵坐标
    
        double dis; //离原点距离
    
    }a[100];
    
    void shuru(int n);
    
    struct point getPoint(struct point *p, int n);
    
    int main()
    {
        struct point *p, ab;
    
        int n, i;
        p = a;
        scanf("%d", &n);
        shuru(n);
        ab = getPoint(p, n);
        printf("(%d,%d)", ab.x, ab.y);
    
    
    }
    
    void shuru(int n)
    {
        int x, y;
        int i = 0;
    
        while((scanf("%d%d", &a[i].x, &a[i].y) == 2) && (++i < n) );
    
    }
    
    struct point getPoint(struct point *p, int n)
    {
        int i, j, t;
        double h;
        struct point xy;
        for(i=0; i<n; i++)
        {
            (p+i)->dis = sqrt((((p+i)->x) * ((p+i)->x)) + (((p+i)->y) * ((p+i)->y)));
        }
    
        for(i=0; i<n-1; i++)
        {
            for(j=0; j<n-i-1; j++)
            {
                if((p+j)->dis > (p+j+1)->dis)
                {
                    h = (p+j)->dis;
                    (p+j)->dis = (p+j+1)->dis;
                    (p+j+1)->dis = h;
    
                    t = (p+j)->x;
                    (p+j)->x = (p+j+1)->x;
                    (p+j+1)->x = t;
    
                    t = (p+j)->y;
                    (p+j)->y = (p+j+1)->y;
                    (p+j+1)->y = t;
    
                }
            }
        }
        if(p->dis < (p+1)->dis)
        {
            xy.x = p->x;
            xy.y = p->y;
            xy.dis = p->dis;
        }
        else if(p->dis == (p+1)->dis)
        {
            if(p->x < (p+1)->x)
            {
                xy.x = p->x;
                xy.y = p->y;
                xy.dis = p->dis;
            }
            else if(p->x > (p+1)->x)
            {
                xy.x = (p+1)->x;
                xy.y = (p+1)->y;
                xy.dis = (p+1)->dis;
            }
            else if(p->x == (p+1)->x)
            {
                if(p->y < (p+1)->y)
                {
                    xy.x = p->x;
                    xy.y = p->y;
                    xy.dis = p->dis;
                }
                else
                {
                    xy.x = (p+1)->x;
                    xy.y = (p+1)->y;
                    xy.dis = (p+1)->dis;
                }
            }
        }
        return xy;
    
    }
    

    C++ :

    #include<stdio.h>
    #include<math.h>
    
    struct point{
    
        int x;  //横坐标
    
        int y;  //纵坐标
    
        double dis; //离原点距离
    
    }a[100];
    
    void shuru(int n);
    
    struct point getPoint(struct point *p, int n);
    
    int main()
    {
        struct point *p, ab;
    
        int n, i;
        p = a;
        scanf("%d", &n);
        shuru(n);
        ab = getPoint(p, n);
        printf("(%d,%d)", ab.x, ab.y);
    
    
    }
    
    void shuru(int n)
    {
        int x, y;
        int i = 0;
    
        while((scanf("%d%d", &a[i].x, &a[i].y) == 2) && (++i < n) );
    
    }
    
    struct point getPoint(struct point *p, int n)
    {
        int i, j, t;
        double h;
        struct point xy;
        for(i=0; i<n; i++)
        {
            (p+i)->dis = sqrt((((p+i)->x) * ((p+i)->x)) + (((p+i)->y) * ((p+i)->y)));
        }
    
        for(i=0; i<n-1; i++)
        {
            for(j=0; j<n-i-1; j++)
            {
                if((p+j)->dis > (p+j+1)->dis)
                {
                    h = (p+j)->dis;
                    (p+j)->dis = (p+j+1)->dis;
                    (p+j+1)->dis = h;
    
                    t = (p+j)->x;
                    (p+j)->x = (p+j+1)->x;
                    (p+j+1)->x = t;
    
                    t = (p+j)->y;
                    (p+j)->y = (p+j+1)->y;
                    (p+j+1)->y = t;
    
                }
            }
        }
        if(p->dis < (p+1)->dis)
        {
            xy.x = p->x;
            xy.y = p->y;
            xy.dis = p->dis;
        }
        else if(p->dis == (p+1)->dis)
        {
            if(p->x < (p+1)->x)
            {
                xy.x = p->x;
                xy.y = p->y;
                xy.dis = p->dis;
            }
            else if(p->x > (p+1)->x)
            {
                xy.x = (p+1)->x;
                xy.y = (p+1)->y;
                xy.dis = (p+1)->dis;
            }
            else if(p->x == (p+1)->x)
            {
                if(p->y < (p+1)->y)
                {
                    xy.x = p->x;
                    xy.y = p->y;
                    xy.dis = p->dis;
                }
                else
                {
                    xy.x = (p+1)->x;
                    xy.y = (p+1)->y;
                    xy.dis = (p+1)->dis;
                }
            }
        }
        return xy;
    
    }
    
    • 1

    信息

    ID
    1725
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者