题目描述
一屠晚归,担中肉尽,止有剩骨,途经一狼穴。屠夫在发现狼穴后马上以vp m/s匀速逃跑,狼在屠夫逃跑t秒后以vd/s的速度匀速追赶,每当狼即将追上屠夫时,屠夫会立即向狼扔一块骨头,狼会立即捡起骨头并以相同的速度返回洞穴并花费f秒的时间将骨头藏好,然后以相同的速度继续追赶屠夫。
设洞穴离屠夫的住处距离为c米,则屠夫担中至少应有多少块骨头才能保证屠夫安全回家?如果狼恰好在屠夫到达家门口的时候追上,则不需要投骨。
输入
输入的第一行包含一个整数T(T<100)表示数据组数,每组数据包括五个整数,vp,vd,t,f,c(1 ≤ vp,vd ≤ 100,1 ≤ t,f ≤ 10,1 ≤ c ≤1000)。
输出
每组数据输出一行,包括一个整数,表示需要的最少骨头数。
示例输入
2
1 2 1 1 10
1 2 1 1 8
示例输出
2
1
#include <stdio.h> int main() { freopen("a.txt","r",stdin); int T; int vp,vd,t,f,c; scanf("%d",&T); while(T--) { scanf("%d%d%d%d%d",&vp,&vd,&t,&f,&c); if(vp>=vd) { printf("0\n"); continue; } double t0=1.0*vp*t/(vd-vp);//狼第一次追上所花时间; double tmp=t+t0;//屠夫发现狼穴到狼追上所经过的时间; int sum=0; while(vp*tmp<c) { double t1=vp*tmp/vd;//狼返回去所用时间; double t2=vp*(tmp+f+t1)/(vd-vp);//狼埋好骨头再次追上所花时间; tmp+=t1+t2+f; sum++; } printf("%d\n",sum); } return 0; }