东华大学 2022 oj c++ 无超纲写法 简单易懂 繁忙的通讯兵

 //华中科技大学乃春友情支援,可读性很高

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值