zoukankan      html  css  js  c++  java
  • A. Srdce and Triangle 几何题

    链接:https://www.nowcoder.com/acm/contest/104/A
    来源:牛客网

    题目描述


    Let  be a regualr triangle, and D is a point in the triangle. Given the angle of . Then let AD, CD and BD form a new triangle, what is the size of the three angles?
     
     
    #include<math.h>
    #include<stdlib.h>
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #define pi acos(-1.0)
    #define eps 1e-12
    using namespace std;
    struct point
    {
        double x,y;
        point(){}
        point(double x,double y)
        {
            this->x=x;
            this->y=y;
        }
    }o1,o2,jiao1,jiao2,p,pp,ppp;
    double xmult(point p1,point p2,point p0)
    {
        return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
    }
    double Distance(point p1,point p2)
    {
        return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
    }
    //点到直线的距离
    double disptoline(point p,point l1,point l2)
    {
        return fabs(xmult(p,l1,l2))/Distance(l1,l2);
    }
    //求两直线交点
    point intersection(point u1,point u2,point v1,point v2)
    {
        point ret=u1;
        double t=((u1.x-v1.x)*(v1.y-v2.y)-(u1.y-v1.y)*(v1.x-v2.x))
                 /((u1.x-u2.x)*(v1.y-v2.y)-(u1.y-u2.y)*(v1.x-v2.x));
        ret.x+=(u2.x-u1.x)*t;
        ret.y+=(u2.y-u1.y)*t;
        return ret;
    }
     
    void intersection_line_circle(point c,double r,point l1,point l2,point& p1,point& p2)
    {
        point p=c;
        double t;
        p.x+=l1.y-l2.y;
        p.y+=l2.x-l1.x;
        p=intersection(p,c,l1,l2);
        t=sqrt(r*r-Distance(p,c)*Distance(p,c))/Distance(l1,l2);
        p1.x=p.x+(l2.x-l1.x)*t;
        p1.y=p.y+(l2.y-l1.y)*t;
        p2.x=p.x-(l2.x-l1.x)*t;
        p2.y=p.y-(l2.y-l1.y)*t;
    }
     
    void intersection_circle_circle(point c1,double r1,point c2,double r2,point& p1,point& p2)
    {
        point u,v;
        double t;
        t=(1+(r1*r1-r2*r2)/Distance(c1,c2)/Distance(c1,c2))/2;
        u.x=c1.x+(c2.x-c1.x)*t;
        u.y=c1.y+(c2.y-c1.y)*t;
        v.x=u.x+c1.y-c2.y;
        v.y=u.y-c1.x+c2.x;
        intersection_line_circle(c1,r1,u,v,p1,p2);
    }
    double c(double A,double B,double C)
    {
        return (A*A+B*B-C*C)/2.0/A/B;
    }
    int main()
    {
        p.x=0.0;
        p.y=0.0;
        pp.x=20.0;
        pp.y=0.0;
        ppp.x=10.0;
        ppp.y=10.0*tan(pi/3.0);
        double A1,A2,A3,r1,r2,A[3],ans[3];
        while(~scanf("%lf%lf%lf",&A1,&A2,&A3))
        {
            A1*=pi/180.0;
            A2*=pi/180.0;
            A1=(pi-A1)*2.0;
            A2=(pi-A2)*2.0;
            o1.x=10.0;
            o1.y=-10.0/tan(A1/2.0);
            r1=10.0/sin(A1/2.0);
            double len=10.0*tan(pi/3.0)+10.0/tan(A2/2.0);
            o2.x=len*cos(pi/6.0);
            o2.y=len*sin(pi/6.0);
            r2=10.0/sin(A2/2.0);
            intersection_circle_circle(o1,r1,o2,r2,jiao1,jiao2);
            if(Distance(jiao1,pp)<eps)swap(jiao1,jiao2);
            A[0]=Distance(jiao1,p);
            A[1]=Distance(jiao1,pp);
            A[2]=Distance(jiao1,ppp);
            sort(A,A+3);
            //printf("%.9lf %.9lf %.9lf
    ",A[0],A[1],A[2]);
            if(A[0]+A[1]>A[2])
            {
                ans[0]=acos(c(A[0],A[1],A[2]));
                ans[1]=acos(c(A[0],A[2],A[1]));
                ans[2]=acos(c(A[1],A[2],A[0]));
                sort(ans,ans+3);
                for(int i=0;i<3;i++)
                    printf("%.9f ",ans[i]/pi*180.0);
                printf("
    ");
            }
            else printf("-1 -1 -1
    ");
        }
         
    }

    日常学python

    while True:
        try:
            A=list(map(int,input().split()))
            A=sorted(A)
            print(A[0]-60,A[1]-60,A[2]-60)
        except EOFError:
            break
    str = "Line1-abcdef 
    Line2-abc 
    Line4-abcd";
    print str.split( );
    print str.split(' ', 1 );
     
    成功的路并不拥挤,因为大部分人都在颓(笑)
  • 相关阅读:
    day 66 ORM django 简介
    day 65 HTTP协议 Web框架的原理 服务器程序和应用程序
    jQuery的事件绑定和解绑 事件委托 轮播实现 jQuery的ajax jQuery补充
    background 超链接导航栏案例 定位
    继承性和层叠性 权重 盒模型 padding(内边距) border(边框) margin 标准文档流 块级元素和行内元素
    属性选择器 伪类选择器 伪元素选择器 浮动
    css的导入方式 基础选择器 高级选择器
    03-body标签中相关标签
    Java使用内存映射实现大文件的上传
    正则表达式
  • 原文地址:https://www.cnblogs.com/SuuT/p/8910540.html
Copyright © 2011-2022 走看看