Problem Description
有两个球在长度为L的直线跑道上运动,两端为墙。0时刻小球a以1m/s的速度从起点向终点运动,t时刻小球b以相同的速度从终点向起点运动。问T时刻两球的距离。这里小球与小球、小球与墙的碰撞均为弹性碰撞,所有过程没有能量损失。
Input
先输入一个q,代表q组数据,然后每组3个整数 L,t,T。
1<=L<=1000;0<=t<=1000;t<=T<=1000;
1<=L<=1000;0<=t<=1000;t<=T<=1000;
Output
一个整数,代表答案。
Sample Input
2 10 4 7 8 3 9
Sample Output
0 5
解法:模拟~
1 #include<bits/stdc++.h> 2 #define clr(x) memset(x,0,sizeof(x)) 3 #define LL long long 4 using namespace std; 5 #define INF 0x3f3f3f3f 6 typedef long long ll; 7 const int N= 30 +9; 8 struct Matrix 9 { 10 int m[N][N]; 11 }; 12 int Dinit,Dend; 13 int add,sub; 14 int main() 15 { 16 int test; 17 int L,t,T; 18 cin>>test; 19 while(test--) 20 { 21 cin>>L>>t>>T; 22 Dinit=0,Dend=L; 23 add=1,sub=-1; 24 for(int i=1;i<=T;i++) 25 { 26 if(i>t){Dinit+=add,Dend+=sub;} 27 else{Dinit+=add;} 28 if(Dinit==Dend){add=-1,sub=1;} 29 if(Dinit==0){add=1;} 30 if(Dinit==L){add=-1;} 31 if(Dend==0){sub=1;} 32 if(Dend==L){sub=-1;} 33 } 34 cout<<abs(Dend-Dinit)<<endl; 35 } 36 return 0; 37 }