王老头

导航

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())))

 

 

posted on 2018-09-03 22:07  王老头  阅读(284)  评论(0)    收藏  举报