1078: 算步数

该篇文章介绍了一个编程问题,涉及计算在满足特定步长限制(包括第一步和最后一步必须为1,其他步长可增减1或不变)下,从给定坐标A到B所需的最小步数。使用Python实现的方法利用了平方根和判断条件来求解。
摘要由CSDN通过智能技术生成

1078: 算步数

时间限制: 1 Sec  内存限制: 32 MB
提交: 39  解决: 13
[提交][状态][讨论版]

题目描述

给你坐标轴上的两个点A和B,请问从A走到B最少需要多少步?
我们对走的每一步的步长作出如下限制:
第一步和最后一步的步长必须是1,其他的任意一步的步长必须比前一步的步长小1、大1或相等。

输入

输入包含多组测试数据。每组输入两个整数A和B(0<=A<=B<2^31)。

输出

对于每组输入,输出从A走到B最少需要多少步。

样例输入

45 48
45 49
45 50

样例输出

3
3
4

python

from math import sqrt

while True:
    sums = 0
    a, b = list(map(int, input().split()))
    n = b - a
    if n==0:
        print(0)
        continue
    s = int(sqrt(n))
    sums += 2 * s - 1
    if n - s * s > 0:
        if n - s * s <= s:
            sums += 1
        else:
            sums += 2
    print(sums)

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值