Description
话说孙悟饭与小林正在与刚造访地球的赛亚人贝吉塔交战,因为连贝吉塔的手下纳巴的实力也远在他俩之上,由于差距悬殊,小林不得不设脱离战场,去寻找正在修炼中的悟空求救,而赛亚人一伙岂能让他们轻易逃脱,于是贝吉塔让纳巴去追小林而着手对付孙悟饭。
假设小林的速度是vp 每秒,纳巴速度 vd每秒,他俩与贝吉塔当时处在同一地点(无视孙悟饭),当纳巴觉察到小林逃跑这一举动需要t秒反应时间,小林会在此间全速离开,虽然看起来小林毫无胜算,但是他有一招叫做太阳拳的绝招,一旦纳巴超越自己那一瞬间,他会使出太阳拳让纳巴失明,一旦使出该招,纳巴不得不立即回去找贝吉塔拿眼药水,即他必须返回原处,并且在那里闭目养神f秒之后,再重新追赶,作为一名力大无穷却智商奇低的选手,小林这太阳拳屡试不爽,设刚开始与贝吉塔所在的地方为起点,该点离悟空修炼处相距为c,求小林到达悟空处 最少需要使用几次太阳拳,如果小林刚好到达悟空处,而纳巴正好追到,则该次无需使用太阳拳,因为悟空会帮你干掉纳巴。
Input
多组数据,每行一个数,分别代表vp,vd,t,f ,c, (1≤vp,vd≤100, 1≤t,f≤10, 1≤c≤1000).
Output
每组数据一个整数,表示太阳拳最少使用次数。
Sample Input
1
2
1
1
10
1
2
1
1
8
Sample Output
2
1
题目大意:建议画出s-t图像,建议把纳巴开始的时间设为0
解题思路:设变量d为每次纳巴从开始追到追上小林的时间,这样d1=vp*t/(vd-vp);以后每次新的d=(d*(vp+vd)+f*vp)/(vd-vp),这样不断维护一个cur当前时间,和小林找到悟空的时间all相比就可以啦!
#include<iostream>
#include<cmath>
using namespace std;
int main(){
double vp,vd,t,f,c;
while(cin>>vp>>vd>>t>>f>>c){
int tot=;//次数
double all=c/vp-t;//总时间(把先走的减掉)
double cur=;//当前时间
double d=;//纳吧每一次从开始追到追上的时间 if(vd<=vp)tot=;
else{
d=vp*t/(vd-vp);
cur+=d;
if(cur>=all)tot=;
else{
while(cur<all){
tot++;
cur+=(d+f);
d=(d*(vp+vd)+f*vp)/(vd-vp);//用老的更新新的
cur+=d;
}
}
}cout<<tot<<'\n';
}return ;
}