在腾讯课堂的物理课上,进行了一个有趣的物理实验。
在一个长度为 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(1≤L≤1000), t(0 \le t \le 1000),t(0≤t≤1000), T(t \le T \le 1000)T(t≤T≤1000)。
输出格式
输出 TT 时刻两车之间的距离。
样例输入1
10 4 7
样例输出10
样例输入28 3 9
样例输出25
题解:碰撞其实可以视为相互穿越,那么两车其实可以视为没有任何相互影响,然后单独模拟即可。#include#include #include #include using namespace std;int main(){ int L,t,T; while(~scanf("%d%d%d",&L,&t,&T)) { //先假设同一起点 t=T-t;//乙开始跑的时间 while(T>=2*L)//除去多余的来回 { T=T%(2*L); } if(T>=L)//最后真正的落脚点 T=2*L-T; while(t>=2*L) { t=t%(2*L); } if(t>=L)//同理 t=2*L-t; t=L-t;//其实方向不一样,所以改变方向 printf("%d\n",abs(T-t)); } return 0;}