5.27计蒜客网络初赛A题 腾讯课堂的物理实验

来源:互联网 发布:真相网络 编辑:程序博客网 时间:2024/06/06 14:04

其实这是一道很简单的题,但没有想到trick,导致写的很复杂,其实有很简单的做法

题面:

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

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

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

输入格式

输入三个整数L(1≤L≤1000), t(0≤t≤1000),T(t≤T≤1000)。

输出格式

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

样例输入1

10 4 7
样例输出1
0
样例输入2
8 3 9
样例输出2
5

大致思路:

其实很简单,每次碰撞之后相当于没有碰撞的状态,只不过是小球的编号发生了交换。
就可以理解为两个小球不发生碰撞,这样就很好进行模拟了。

代码:

#include<bits/stdc++.h>using namespace std;int main(){    int x,y,l,t,cnt=1,aim,ans=0;    cin>>l>>t>>aim;    x=0;y=l;    bool flag1=true,flag2=true;    while(cnt<=aim)    {        if(flag1)            x++;        else            x--;        if(x==0||x==l)            flag1=!flag1;        if(cnt>t){            if(flag2)                y--;            else                y++;        }        if(y==0||(y==l&&cnt>t))            flag2=!flag2;        cnt++;    }    cout<<abs(x-y)<<endl;    return 0;}
原创粉丝点击