题目

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

程序分析

因为168对于指数爆炸来说实在太小了,所以可以直接省略数学分析,用最朴素的方法来获取上限:

n=0
while (n+1)**2-n*n<=168:
 n+=1
print(n+1)

补充:用Python实现"有效的完全平方数"的一种方法

给一个正整数num,写一个函数判断它是否是一个完全的平方数,是则返回True,不是返回False

注意:不要使用任何内嵌的函数,如sqrt

Example 1

Input: 16
Output: true
Example 2:
Input: 14
Output: false

1:二分法

def isPerfectSquare(self, num):
  """
  :type num: int
  :rtype: bool
  """
  low = 1 
  high = num
  while low < high:
   mid = (low + high) // 2
   if mid * mid == num:
    return True
   elif mid * mid < num:
    low = mid + 1
   else:
    high = mid - 1
  return low * low == num

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。