思路:
1.根据题意我们可以根据楼号排序的特点把m号楼和n号楼的x坐标和y坐标确定下来。我们现在假设x轴正方向是右,y轴正方向是竖直向下↓
2.根据题意要确定x轴坐标首先要先确定它是在奇数行还是偶数行:
①当它在奇数行时((m//v)%2 != 0)分两种情况,当m能被v整除时是在最后一位,当m不能被v整除时是在。(提示:// 是整除运算符,将计算结果的小数部分舍去得一整数)
x轴第(m%v)位。
②当它在偶数行时((m//v)%2 == 0)也是分两种情况,当m能被v整除时是在x轴第一位,否则是在x轴第(v+1) - (m%v)位。
3.确定y轴坐标相对就简单很多了,即第(m//v) + 1行
4.确定距离,这里我们偷个懒不想了,直接引入个math库用abs()函数直接算出两者的x轴和y轴距离之差,再将两个方向距离之差相加即为最后的距离!
import math
v = int(input('宽度:'))
m = int(input('第一栋楼楼号:'))
n = int(input('第二栋楼楼号:'))
def x_certain(num:int):
if (num//v) % 2 != 0:
if num%v == 0:
num_x = v
else:
num_x = num % v
elif (num//v) %2 == 0:
if num%v == 0:
n_x = 1
else:
num_x = v - (num % v) + 1
return num_x
def y_certain(num):
num_y = (num//v) + 1
return num_y
m_x = x_certain(m)
m_y = y_certain(m)
n_x = x_certain(n)
n_y = y_certain(n)
print(abs(m_x - n_x) + abs(m_y - n_y))