ShinriiTin's Blog - 博主是sb

hdu4969 Just a Joke

题意:

      有个点G在半径为R的圆O上做速率为v1的匀速圆周运动,点B从圆心出发,向点G做速率为v2的运动,已知O,B,G三点始终共线,求B和G相遇时走过的路程

由三点始终共线得B,G两点的角速度相同,w=v1/R

把v2分解为与半径平行的v2y和与半径垂直的v2x,设离圆心的距离为r,则v2x=w*r=v1*r/R

则v2y=sqrt(v22-(v1*r/R)2)

由v2y=dr/dt得:dt=dr/v2y

两边同时积分得:t(r)=R*arcsin(v1*r/(v2*R))/v1+C

则B点运动时间T为R*arcsin(v1/v2)/v1

知道了运动时间就好算路程了。。。s=v2*T

Portal

#include <math.h>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;

int T;

double v1,v2,R,D;

int main(){
	for(scanf("%d",&T);T--;){
		scanf("%lf%lf%lf%lf",&v1,&v2,&R,&D);
		double len=R*v2*asin(v1/v2)/v1;
		if(len-D>1e-9)puts("Why give up treatment");
		else puts("Wake up to code");
	}
	return 0;
}