蓝桥杯试题算法训练之大等于n的最小完全平方数——Python满分解答

问题描述

输出大等于n的最小的完全平方数。

若一个数能表示成某个自然数的平方的形式,则称这个数为完全平方数

Tips:注意数据范围

输入格式

一个整数n

输出格式

大等于n的最小的完全平方数

样例输入

71711

样例输出

71824

数据规模和约定

n是32位有符号整数

实现思路

首先弄明白完全平方数的概念:

完全平方指用一个整数乘以自己例如1 * 1,2 * 2,3 * 3等,依此类推。若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。完全平方数是非负数

注意最后一句话,完全平方数是非负数,也就是说比负数大的最小完全平方数是0

根据样例输入和输出,我们来分析一下,求71711的最小完全平方数,答案是71824。

对上面两个数进行开方:

  • 71711 ≈ 267.789 \sqrt{71711} ≈ 267.789 71711 267.789
  • 71824 = 268 \sqrt{71824} = 268 71824 =268

发现了什么,求n的最小完全平方数,就是让n开方,然后对其结果向上取整,再平方。

我们用代码实现一下,这个思路可以省去大量的运算,不需要使用for循环一个个地遍历。

不过需要注意n为负数的情况。

代码实现

def PerfectSquare():
    import math
    n = int(input())
    result = 0
    if n >= 0:
        result = n ** 0.5
        result = math.ceil(result)
        result = result ** 2
    print(result)

PerfectSquare()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.郑先生_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值