题意:公主以vp的速度逃跑,龙以vd的速度去追赶,公主出发t时间后龙才出发,如果龙追上了公主,公主便使用个道具是龙以原速度回到出发点,并且f时间后才可以出发。公主与终点距离c,只要公主到达终点龙就追不上公主,问公主需要使用多少次道具。
思路:如果龙的速度小于公主的速度就永远追不上,只需要计算每次龙追上公主的时间即可。再将距离和终点比较。具体看代码。
#include<cstdio>
int main()
{
double vp, vd, t, f, c;
while(~scanf("%lf%lf%lf%lf%lf", &vp, &vd, &t, &f, &c))
{
if(vd <= vp)
printf("0\n");
else
{
int sum = 0;
double dis = vp*t;
while(1)
{
double t2 = dis*1.0/(vd-vp);//每次龙追上公主所用时间
dis += vp*t2;//公主所走路程
if(dis >= c)break;
else
{
dis += (t2+f)*vp;
sum++;
}
}
printf("%d\n", sum);
}
}
}
</span>