题意:a从圆心出发去追b,b沿着圆跑,速度分别是v2,v1(匀速),a,b,圆心始终三点共线,圆半径为R,问a在d距离内能否追到b。
哎,大学的物理积分都忘记了。。。好陌生了。。。看了题解才会的。。。把a的速度v2分解为径向速度和切向速度,则切向速度和B的速度平行,角速度相等,w(哦米噶)=v1/R, 设某时刻a距离圆心距离为 r,则径向速度 dr/dt=根号下(v2^2-w^2*r^2),移项,设t的时候追到,(0,t)定积分即可求出时间t。
t=R/v1*acsin(v1/v2);
#include<cmath> #include<iostream> using namespace std; int main() { int T; cin>>T; while(T--) { double R,v1,v2,d; cin>>v1>>v2>>R>>d; double t=R/v1*(asin(v1/v2)); if(t*v2>d) cout<<"Why give up treatment"<<endl; else cout<<"Wake up to code"<<endl; } return 0; }
原文:http://blog.csdn.net/u011498819/article/details/38730333