zoukankan      html  css  js  c++  java
  • 搜索1004

    题目大意:

    给出一个点的坐标,和射箭的速度,求能够到达这个点的射出的角度;

    解题思路:

    将射箭的方向正交分解为x,y轴,根据公式x=v*cosa,y=v*sina+g*t*t/2,消去t,得出一元二次方程,二分求解

    代码:

    #include<iostream>
    #include<cmath>
    #include<iomanip>
    using namespace std;
    #define PI acos(-1)
    int main()
    {
    
        int T;  double g=9.8;
        cin>>T;
        while(T--)
        {
            double x,y,v;
            cin>>x>>y>>v;
            double a,b,c,dyx,wyx,temp;
            int wrong=-1;
            a=g*x*x;
            b=(-2)*x*v*v;
            c=g*x*x+2*v*v*y;
            temp=b*b-4*a*c;
            if(temp<0)
            cout<<wrong<<endl;
            else
            {
                dyx=atan((-1*b+sqrt(temp))/(2*a));
                wyx=atan((-1*b-sqrt(temp))/(2*a));
                if((dyx<0||dyx>PI/2.0)&&(wyx<0||wyx>PI/2.0))
                cout<<wrong<<endl;
                else if(dyx<0||dyx>PI/2.0)
                cout<<fixed<<setprecision(6)<<wyx<<endl;
                else if(wyx<0||wyx>PI/2.0)
                cout<<fixed<<setprecision(6)<<dyx<<endl;
                else
                cout<<fixed<<setprecision(6)<<(wyx>dyx?dyx:wyx)<<endl;
            }
        }
        return 0;
    }
  • 相关阅读:
    ubuntu上安装boost库
    boost array使用
    2017新年总结
    qt 设置等待事件
    vs下 qt源码调试
    使用记事本创建Web服务(WebService)
    司以类聚,人以群分
    附件上传
    DES 加密解密
    工作总结-js插件
  • 原文地址:https://www.cnblogs.com/Sikaozhe/p/5415483.html
Copyright © 2011-2022 走看看