首页 > 代码库 > 腾讯课堂的物理实验(2017计蒜客初赛第三场)

腾讯课堂的物理实验(2017计蒜客初赛第三场)

A题

在腾讯课堂的物理课上,进行了一个有趣的物理实验。

在一个长度为 LL 米的光滑轨道上,小车 A 在 00 时刻以 1\mathrm{m/s}1m/s 的速度从左端出发向右运动,小车 B 在 tt 时刻以 1\mathrm{m/s}1m/s 的速度从右端出发向左运动,两个小车的质量相等。假设所有碰撞都是弹性碰撞,也就是当两个小车相向碰撞时,他们各自会以原来的速度向相反的方向运动;小车和轨道两端发生碰撞时,小车会以原速度向反方向运动。

试求出 TT 时刻的时候,两个小车相距多远。

输入格式

输入三个整数 L(1 \le L \le 1000),L(1L1000)t(0 \le t \le 1000),t(0t1000)T(t \le T \le 1000)T(tT1000)。

输出格式

输出 TT 时刻两车之间的距离。

样例输入1

10 4 7

样例输出1

0

样例输入2

8 3 9

样例输出2

5
这个题贼坑。。。刚开始竟然没看出来两小车相撞相当于互换,即互不影响,可以单独计算。。。

#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

int main()
{
    int L,t,T;
    while(~scanf("%d %d %d",&L,&t,&T)){
        int n=T%(2*L);
        int l;
        if(n>=L){
            l=L-(n-L);
        }else{
            l=n;
        }

        int r;
        int n2=(T-t)%(2*L);
        if(n2>=L){
            r=L-(n2-L);
        }else{
            r=n2;
        }
        r=L-r;

        int ans=r-l;
        if(ans>=0){
            printf("%d\n",ans);
        }else{
            printf("%d\n",-1*ans);
        }
    }
    return 0;
}

 

 

腾讯课堂的物理实验(2017计蒜客初赛第三场)