OD 算法题 B卷【求最小步数】

文章目录

  • 求最小步数

求最小步数

  • 求从坐标零点到坐标点n的最小步数,一次只能沿着横坐标轴向左或向右移动2或3;
  • 途经的坐标点可以为负数;

输入描述:
坐标点n
输出描述:
从坐标零点移动到坐标点n的最小步数
n在【1,10^9】

示例1
输入:
4
输出:
2
说明:右移2,再右移2,最小需要两步;

示例2
输入:
19
输出:
7

示例3
输入:
977
输出:
326

python实现:

  • 尽可能走长度为3的步子,才能保证步子最少

n = int(input().strip())x = 0  # 2的个数
y = 0  # 3的个数
# 尽可能走长度为3的步子,才能保证步子最少if n % 3 != 0:if n % 3 % 2 != 0:y = n // 3 - 1x = (n - y * 3) // 2elif n % 3 % 2 == 0:y = n // 3x = (n - y * 3) // 2
else:y = n // 3print(abs(x) + abs(y))

其他方案:


n = int(input().strip())
x = 0  # 表示2的个数
y = 0  # 表示3的个数# 奇数变偶数
if n % 2 != 0:  # 至少有一个3n -= 3y += 1# 偶数对6求模
x += int(n % 6 // 2)
y += int(n // 6 * 2)print(abs(x) + abs(y))