//华中科技大学乃春友情支援,可读性很高
AC代码:
#include <iostream>
#include <cmath>
using namespace std;
//计算每次通讯时A和B的距离
double distance(double xA, double xB){
return xB - xA;
}
//计算通讯员和军队两次通讯之间用时
double time(int v, int vT, double s){
int vre = abs(v - vT);
return s / vre;
}
int main(){
double N = 0;
int vA = 8, vB = -5, vT = 45; //设定速度
double xA = 0, xB = 200, xT = 0; //设定初始位移
int S = 0;//通讯次数
double t = 0; //设定初始时间
while(cin >> N){
while(1){
if(vT * vA > 0){ //A和T速度同向则T和B相向
t = time(vB,vT,distance(xA,xB));
xA += vA*t;
xB += vB*t;
S++;
vT *= -1; //通讯员掉头
if(distance(xA,xB) < N) break;
} else { //A和T速度反向则T和A相向
t = time(vA,vT,distance(xA,xB));
xA += vA*t;
xB += vB*t;
S++;
vT*=-1; //通讯员掉头
if(distance(xA,xB) < N) break;
};
}
cout << S;
S = 0;
}
return 0;
}