文章目录
- 求最小步数
求最小步数
- 求从坐标零点到坐标点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))