问题描述
输出大等于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()