题目描述
求从坐标零点到坐标点n
的最小步数,一次只能沿横坐标轴向左或向右移动2
或3
注意:途径的坐标点可以为负数
输入描述
坐标点n
输出描述
输出从坐标零点移动到坐标点n
的最小步数
备注1 <= n <= 10^9
示例一
输入
4
输出
2
说明
从坐标零点移动到4
,最小需要两步,即右移2
,再右移2
思路
分情况讨论:
n = 1
。那么至少需要走两次,向右走3
步,向左走2
步。n%3=0
。显然向右走n//3
步就可以到达n
,而且n//3
一定是最小步数。n % 3 = 2
。由于n
除以3
余2
,那么前n-2
步我们可以均用步长3
来填充,一共需要走n//3
步,最后再走2
步。这样总的步数为n//3+1
。n % 3 = 1
。优先从n中拿出余数1和一个3,凑成2个2步,剩下的一定是3的整数倍,按3步来走。
n = int(input())
if n == 1:
print(2)
elif n % 3 == 0:
print(n//3)
elif n%3==2:
print(n//3 + 1)
else:
print((n-3-1)//3+2)