题目描述
兄弟俩骑车郊游,弟弟先出发,每分钟X米,M分钟后,哥哥带一条狗出发。以每分钟Y米的速度去追弟弟,而狗则以每分钟Z米的速度向弟弟跑去,追上弟弟后又立即返回,直到哥哥追上弟弟时,狗跑了多少米?
输入
第一行输入一个整数N,表示测试数据的组数(N<100)
每组测试数据占一行,是四个正整数,分别为M,X,Y,Z(数据保证X<Y<Z)
输出
输出狗跑的路径,结果保留小数点后两位。
样例输入
1
5 10 15 20
样例输出
200.00
代码:
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
float m,x,y,z,a,t,s;
scanf("%f %f %f %f",&m,&x,&y,&z);
a=m*x;//表示哥哥追赶弟弟的距离
t=a/(y-x);//t表示哥哥赶上弟弟所需的时间
s=t*z;
printf("%.2f\n",s);
}
return 0;
}
自我理解:
分析(按顺向综合思路探索):
1、根据弟弟速度为每分钟x米,出发m分钟的条件,可以求什么?
可以求出弟弟走了多少米,也就是哥哥追赶弟弟的距离。
2、根据弟弟速度为每分钟x米,哥哥速度为每分钟y米,可以求什么?
可以求出哥哥每分钟能追上弟弟多少米。
3、通过计算后可以知道哥哥追赶弟弟的距离为m*x米,每分钟可追上的距离为y-x米,根据这两个条件,可以求什么?
可以求出哥哥赶上弟弟所需的时间。
4、狗在哥哥与弟弟之间来回不断奔跑,看起来很复杂,仔细想一想,狗跑的时间与谁用的时间是一样的?
狗跑的时间与哥哥追上弟弟所用的时间是相同的。
5、已知狗以每分钟z米的速度,在哥哥与弟弟之间来回奔跑,直到哥哥追上弟弟为止,和哥哥追上弟弟所需的时间,可以求什么?
可以求出这时狗总共跑了多少距离。