求调
查看原帖
求调
678175
jqQt0220楼主2024/5/21 20:42

代码:

#include<bits/stdc++.h>
using namespace std;
// #define fileio
// #define IOS
void ___()
{
#ifdef fileio
    freopen(".in","r",stdin);
    freopen(".out","w",stdout);
#endif
#ifdef IOS
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    #define endl '\n'
#endif
}
#define ll long long
#define double long double
const double pi=3.141592653589793;
double x,y,t,v;
double dist(double x1,double y1,double x2,double y2){return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}
double angtorad(double deg){return deg*pi/180;}//角度转弧度
int main()
{
    ___();
    cin>>x>>y;
    cin>>t;
    cin>>v;
    double r=dist(0,0,x,y);
    double theta=(y>0?0:180)+2*asin(dist(r,0,x,y)/2/r)+360*v*t;
    double x1=r*cos(angtorad(theta)),y1=r*sin(angtorad(theta));
    printf("%lf",dist(x,y,x1,y1));
    return 0;
}

思路:原点分别连接 A(x,y),P(r,0),r=OAA(x,y),P(r,0),r=OA,过点 OO 向 APAP 作垂线 OBOB,利用三角函数求出 ∠POB\angle POB,×2\times2 得 ∠POA\angle POA,然后从这个角开始(特判 AA 在 xx 轴以下 +180°+180\degree)旋转 360vt°360vt\degree,最后利用 x=cos⁡θ,y=sin⁡θx=\cos\theta,y=\sin\theta 求出最后的点,算距离。

理论上应该是一点问题都没,但是样例 1 输出 0,求调。

2024/5/21 20:42
加载中...