Aibee 在线笔试
有一条x轴,坐标值从负无穷到正无穷,刻度分隔为1。现在存在一个小球,初始位置在0,输入一个目标位置,求小球至少需要走多少步才能达到目标位置。
现规定小球的运动距离随着第几步来确定,即假设第一步,小球可以往前(往后)走一步,走第二步的时候,小球可以往前(往后)走两步,依次内推...
样例1:
输入:
3
输出:
2
解释:0->1->3 至少需要走两步
样例2:
输入:
2
输出:
3
解释:0->1->-1->2 至少需要走三步
题目不太记得了,大概是这样。
思路:首先先假定输入的目标位置,先对其取正数,因为负数和正数其实需要走的步数是一样的。
分析如下:首先一次相加直到和大于目标,比较差值,如果是偶数,说明只需要将几个数的加号变为减号,若是奇数,就要想办法制造1,减去一个奇数加上下一个偶数即可,所以如果当前n是个奇数,就需要加上下一个偶数,如果当前是个偶数就需要减去下一个奇数,加上下一个偶数。
def reachNum(target):
target = abs(target)
step = 1
pos = 0
while (pos < target):
pos += step
step += 1
step -= 1
if (pos == target):
return step
pos -= target
if(pos%2==0):
return step
elif((step+1)%2==1):
return step + 1
else:
return step + 2
print(reachNum(int(input())))
浙公网安备 33010602011771号