题目大意
在一维数轴上,狼的起始位置是 x 1 x_1 x1,马的起始位置的 x 2 x_2 x2 。
每轮狼移动 v 1 v_1 v1步,小马移动 v 2 v_2 v2 步,每一步都可以向左或者向右移动。
狼和马轮流先移动,第一轮狼先动,第二轮马先动。
如果两个动物位置相同,那么马被抓住。
移动不能超过数轴n的长度
代码
#include <iostream>
using namespace std;
int n,v1,v2,x1,x2;
// 模拟
int main()
{
int t; cin >> t;
while(t--)
{
cin >> n >> v1 >> v2 >> x1 >> x2;
// x1 v1 狼
// x2 v2 马
if(x1 < x2){
x1 = n - x1 + 1;
x2 = n - x2 + 1;
}
int ans = 1;
while(1)
{
if(ans & 1){ // 马先动
if(x2 == 1 && x1 == 2) break; // 终止条件
if(x2 - v2 >= 1) // 还能左移,则尽量左移
x2 -= v2;
else if((v2 - x2)%2==0){ // 判断停在1还是停在2
x2 = 2;
}else
x2 = 1;
} else {
if(x1-x2 <= v1) break; // 这也是一个终止条件
x1 -= v1;
}
ans++;
}
cout << ans;
}
return 0;
}