A题
在腾讯课堂的物理课上,进行了一个有趣的物理实验。
在一个长度为 LL 米的光滑轨道上,小车 A 在 00 时刻以 1mathrm{m/s}1m/s 的速度从左端出发向右运动,小车 B 在 tt 时刻以 1mathrm{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
样例输出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 ",ans); }else{ printf("%d ",-1*ans); } } return 0; }